У меня есть интерфейс под названием IEditor
public interface IEditor<T>
where T: SpecialObject
SpecialObject
- абстрактный класс.
Вот моя проблема:
У меня есть класс, наследующий от SpecialObject
, и представление, реализующее этот интерфейс IEditor
public class View : IEditor<Person>
Теперь мне нужно проверить, реализует ли View IEditor
Boolean isEditor = View is IEditor<SpecialObject>
Но IEditor
всегда ложно
Есть ли возможность проверить, является ли View IEditor
?
У меня есть метод, который вызывается при возникновении события закрытия. Представления, которые передаются этому методу, могут реализовывать IEditor, но они также могут реализовывать другой интерфейс. В примере IView
void Closing(object sender, MyEventArgs e)
{
if(e.Item is IView)
{
// DO some closing tasks
if(e.Item is IEditor<SpecialObject>) // always false
{
// Do some special tasks
var editor = e.Item as IEditor<SpecialObject>;
var storedEditObect = editor.StoredObject;
// more tasks
}
} else if(e.Item is ISomeOtherView)
{}
}
у меня есть классы с именами Person, Address и т. Д. Все они наследуются от SpecialObject. В некоторых случаях e.Item наследуется от IEditor или от IEditor Из-за этого,Я должен выполнить приведение к своему базовому классу, чтобы получить доступ к полям свойств по умолчанию