C# 测试接口的泛型类型参数

C# 测试接口的泛型类型参数,c#,generics,interface,C#,Generics,Interface,我有一个通用方法(见下面的代码),如果T是一个特殊的接口,我想执行一些操作。 显然,我可以做一个typeof(T).IsAssignableFrom(IFoo)但是反射相对较慢,因此我想尽可能避免它 现在,我知道我不能有另一个带有约束的方法,因为我会得到不明确的方法错误,否则我就这样做了 有没有办法做我想做的事? 我想这样做的事实是否指出了一些架构问题 public T Load<T>(string name) { T result = LoadFromName<T&g

我有一个通用方法(见下面的代码),如果T是一个特殊的接口,我想执行一些操作。
显然,我可以做一个
typeof(T).IsAssignableFrom(IFoo)
但是反射相对较慢,因此我想尽可能避免它

现在,我知道我不能有另一个带有约束的方法,因为我会得到不明确的方法错误,否则我就这样做了

有没有办法做我想做的事?
我想这样做的事实是否指出了一些架构问题

public T Load<T>(string name)
{
    T result = LoadFromName<T>(name);

    if(T is IFoo) // Obviously doesn't work as T is a type, not a variable
        (result as IFoo).FooMethod();

    return result;
}
public T加载(字符串名称)
{
T结果=LoadFromName(名称);
if(T是IFoo)//显然不起作用,因为T是类型,而不是变量
(结果为IFoo.foothod();
返回结果;
}
但是您得到了一个变量-
结果
!你怎么了

var asFoo = result as IFoo;
if (asFoo != null)
    asFoo.FooMethod();