Holen Sie benutzerdefinierte Attribute aus einem Objekt
Wenn ich versuche, um die benutzerdefinierten Attribute aus einer object
gibt die Funktion null
. Warum?
class Person
{
[ColumnName("first_name")]
string FirstName { get; set; }
Person()
{
FirstName = "not important";
var attrs = AttributeReader.Read(FirstName);
}
}
static class AttributeReader
{
static object[] Read(object column)
{
return column.GetType().GetCustomAttributes(typeof(ColumnNameAttribute), false);
}
}
haben Sie versuchen, Vorname öffentlichkeit?
Der code ist nur ein Allgemeines Beispiel, was ich versuche zu tun.
Nicht du callen
Der code ist nur ein Allgemeines Beispiel, was ich versuche zu tun.
Nicht du callen
var attrs = AttributeReader.Read(Person);
, nicht var attrs = AttributeReader.Read(FirstName);
?InformationsquelleAutor mooper | 2012-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie eine
string
,"not important"
zu dieser Methode. DieType
ist dahertypeof(string)
. Die nicht über diese Attribute. Weitere, auchPerson
nicht haben, dass Attribut: nur dieMemberInfo
(FirstName
) hat.Gibt es Möglichkeiten, durch die übergabe einer
Expression
:mit
Jedoch! Ich sollte raten, ich bin mir nicht sicher, dass die
Person
Konstruktor ist ein geeigneter Ort dafür. Wahrscheinlich muss Zwischenspeichern.Wenn Sie nicht wollen, um Lambda-Ausdrücke, dann übergeben Sie eine
Type
und der Mitglied-name würde auch funktionieren, d.h.(und das tun die Reflexion von dort) - oder Vermischung mit Generika (ohne wirklichen Grund):
mein VORBEHALT gilt weiterhin, obwohl: ich persönlich würde nicht zulassen, dass code, der irgendwo in der Nähe ein Objekt-Konstruktor - es ist der falsche Ort für Sie.
Ja, ich habe nur versucht zu zeigen, was ich versuche zu tun, während Sie den code so übersichtlich wie möglich
Wie kann ich überprüfen, ob ein bestimmtes Attribut erforderlich ist oder nicht? Ich bin der Erstellung einer Instanz einer Klasse als
object obj = Activator.CreateInstance("myModel")
und ich brauche, um zu überprüfen, ob eine bestimmte Eigenschaft erforderlich ist oder nicht:obj.GetType().GetProperty("prop1").......
.InformationsquelleAutor Marc Gravell