我有一个名为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
有没有可能检查视图是否为 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。 因此,我必须将其转换为基类才能访问默认属性字段。
is
和as
具有相同的基础机制。问题在于IEditor<Person>
并没有继承自IEditor<SpecialObject>
。 - dlevIEditor
接口作为IEditor<T>
的基础。然后你可以检查View is IEditor
。 - Piotr Auguscik