У меня есть интерфейс с именем 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
всегда ложно
Есть ли возможность проверить, является ли 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