Bir sınıfın belirli üyelerinde kullandığım özel bir öznitelik yazdım:Özel özellikle dekore edilmiş mülkten değer elde edilsin mi?
public class Dummy
{
[MyAttribute]
public string Foo { get; set; }
[MyAttribute]
public int Bar { get; set; }
}
Özel öznitelikleri türden alıp belirli özniteliğimi bulabiliyorum. Ne yapılacağını anlayamadığım şey, atanan özelliklerin değerlerini elde etmektir. Bir Dummy örneğini alıp (bir nesne olarak) yöntemime aktardığımda .GetProperties() adresinden geri döndüğüm PropertyInfo nesnesini nasıl alabilirim ve .Foo ve .Bar'a atanan değerleri alabilir miyim?
DÜZENLEME:
Benim sorunum, GetValue'u nasıl düzgün bir şekilde arayacağımı anlayamıyorum.
void TestMethod (object o)
{
Type t = o.GetType();
var props = t.GetProperties();
foreach (var prop in props)
{
var propattr = prop.GetCustomAttributes(false);
object attr = (from row in propattr where row.GetType() == typeof(MyAttribute) select row).First();
if (attr == null)
continue;
MyAttribute myattr = (MyAttribute)attr;
var value = prop.GetValue(prop, null);
}
}
Ancak, bunu yaptığımda, prop.GetValue çağrısı bana bir TargetException veriyor - Nesne hedef türüyle eşleşmiyor. Bu değeri almak için bu çağrıyı nasıl yapılandırabilirim?
FirstOrDefault'da Anlaşıldı - bu, sorunu göstermek için çoğunlukla tartışılan bir örnektir, ancak yardım için teşekkürler. Duh, öyle olduğuna inanamıyorum. – Joe