返回特定接口的Type
本文关键字:Type 接口 返回 | 更新日期: 2023-09-27 18:15:07
假设有一个接口IView
,其中存在多个实现。
现在有多个其他类具有以下属性:
public Type ViewType { get; }
我想确保返回的类型是IView
类型。
有什么办法可以做到这一点吗?(如where returnvalue: IView
)
请注意,属性不返回IView
的实例。
如果是这样的话,应该是这样的:public T GetView<T>() where T: IView { }
另一种方法是在调用属性的任何地方检查返回的类型-但是对于相同的检查,这是很多代码。
我立刻想到了你们两个的解决方案。
也许您可以通过添加辅助方法来减少检查返回类型的重复:
public bool ViewImplementsIView()
{
return typeof(this.ViewType).GetInterfaces().Contains(typeof(IView));
}
将测试封装到您的类中,这样您就减少了其他地方所需的验证量—如果返回false,您甚至可以在getter上抛出异常。
try in this way
bool ImplementsIView(object t)
{
return typeof(IView).IsAssignableFrom(typeof(t.GetType()));
}
bool ImplementsIView(Type t)
{
return typeof(IView).IsAssignableFrom(typeof(t));
}