. Мы предоставляем некоторые повторяющиеся задания для консалтинговой компании. У нас есть только несколько ограничений, которые невозможно проверить путем компиляции, например, требование переопределить определенное свойство во всех реализациях класса конкретный интерфейс.Проверьте, что «Тип» переопределяет динамический тип.
Свойство интерфейса, который должен быть перекрытым во всех классах имеет следующую подпись:
dynamic Definition{get;}
я нашел этот StackOverflow вопрос: How to find out if property is inherited from a base class or declared in derived?
который закрыт на мой случай, но в моем случай, свойство определяется наследуется класс и перекрытая в этом одном:
public class ClassA:IMyInterface
{
public virtual dynamic Definition{get{ /*return SomethingSpecificToClassA;*/}}
}
public class ClassB:ClassA
{
public override dynamic Definition{get{ /*return SomethingSpecificToClassB;*/}}
}
//The end goal is to know if ClassB has correctly overriden the property
bool overriden = typeof(ClassB)GetProperties(...).Any(p=>p.Name=="Definition");
Yo u может проверить MemberAttributes, если установлен флаг переопределения – Georg
Хороший способ сделать это (я слегка отредактировал его: 'typeof (ClassB) .GetProperty (« Определение »). DeclaringType == typeof (ClassB)', чтобы знать только текущий класс проверки. Любой способ сделать дополнительную проверку для указанного вами случая ('new dynamic Definition') – J4N
@Georg Где вы упомянули этот MemberAttributes? – J4N