返回特定接口的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 { }

另一种方法是在调用属性的任何地方检查返回的类型-但是对于相同的检查,这是很多代码。

返回特定接口的Type

我立刻想到了你们两个的解决方案。

也许您可以通过添加辅助方法来减少检查返回类型的重复:

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));
    }