Общее приведение C #

У меня есть интерфейс под названием 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 Из-за этого,Я должен выполнить приведение к своему базовому классу, чтобы получить доступ к полям свойств по умолчанию

11
задан Cr3at0rX 21 July 2011 в 09:10
поделиться