Próbuję użyć GetCustomAttributes()
, aby uzyskać atrybut zdefiniowany w usłudze. Problem polega na tym, że właściwość jest nadrzędna i nie mogę się dowiedzieć, jak wyodrębnić zastąpione z wyrażenia. Mogę tylko ustalić, jak uzyskać klasę podstawową.Uzyskiwanie atrybutu z przesłanianej właściwości za pomocą linq Wyrażenie
Oto niektóre kodu
public class MyAttribute : Attribute
{
//...
}
public abstract class Text
{
public abstract string Content {get; set;}
}
public class Abstract : Text
{
[MyAttribute("Some Info")]
public override string Content {get; set;}
}
Teraz próbuję uzyskać MyAttribute
z klasy abstrakcyjnej. Ale muszę go pobrać przez Expression
. To, co zostało z użyciem:
Expression<Func<Abstract, string>> expression = c => c.Content;
Expression exp = expression.Body;
MemberInfo memberType = (exp as MemberExpression).Member;
var attrs = Attribute.GetCustomAttributes(memberType, true);
Niestety atts
kończy jako pusty. Problem polega na tym, że menberType
kończy się na Text.Content
zamiast na klasie Abstract.Content
. Więc kiedy dostaję atrybuty, to nic nie zwraca.
Dziękuję za link do drugiego pytania. Szukałem czegoś podobnego, ale tego nie znalazłem. – Jero
To rozwiązanie, które dałeś, jest pracą, z której korzystałem do tej pory, więc miło uzyskać niezależne wsparcie dla tego :-) Dzięki – Jero