我有一个名为IEditor的接口(interface)

public interface IEditor<T>
    where T: SpecialObject
SpecialObject是一个抽象类。
这是我的问题:
我有一个从SpecialObject继承的类和一个实现此IEditor接口(interface)的 View
public class View : IEditor<Person>
现在,我必须检查View是否实现IEditor<SpecialObject>
Boolean isEditor = View is IEditor<SpecialObject>
但是IEditor总是错误的
是否有可能检查View是否为IEditor<SpecialObject>
编辑
我有一个方法,当发生关闭事件时会被调用。
传递给此方法的 View 可以实现IEditor,但它们也可以实现另一个接口(interface)。在示例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属性字段

最佳答案

创建一个非通用的基本接口(interface)。例如:

public interface IEditor {}

public interface IEditor<T> : IEditor ... {}

然后检查IEditor

10-01 01:54