У меня есть интерфейс под названием IEditor
public interface IEditor<T>
where T: SpecialObject
SpecialObject
- абстрактный класс.
Вот моя проблема:
У меня есть класс, который наследует от SpecialObject
и представление, которое реализует этот интерфейс IEditor
public class View : IEditor<Person>
Теперь, я должен проверить, реализует ли View IEditor<SpecialObject>
Boolean isEditor = View is IEditor<SpecialObject>
Но IEditor
всегда false
Есть ли возможность проверить, является ли View IEditor<SpecialObject>
?
Изменить
У меня есть метод, который вызывается, когда возникает событие закрытия. Представления, которые передаются этому методу, могут реализовать 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 Из-за этого мне нужно передать в базовый класс доступ к полям свойств defaut