C# 传球类型<;T>;

C# 传球类型<;T>;,c#,generics,C#,Generics,我在第三方组件中有一个方法,可以像下面的代码一样调用该方法: ICustomer log = Axis.GetInstance<ICustomer>(); iccustomer log=Axis.GetInstance(); 由于我不想将上述第三方组件直接公开给所有调用方,因此我决定创建一个包装器方法来调用第三方“Axis.GetInstance()”,我的问题是如何传递类型T并在泛型方法内调用该方法 呼叫代码: var result = Util.MyCustomWrapper

我在第三方组件中有一个方法,可以像下面的代码一样调用该方法:

ICustomer log = Axis.GetInstance<ICustomer>();
iccustomer log=Axis.GetInstance();
由于我不想将上述第三方组件直接公开给所有调用方,因此我决定创建一个包装器方法来调用第三方“Axis.GetInstance()”,我的问题是如何传递类型T并在泛型方法内调用该方法

呼叫代码:

var result = Util.MyCustomWrapper<ICustomer>();


public class Util
{
  public static T MyCustomWrapper<T>()
  {

    1.call Axis.GetInstance<T>(); // **how to pass the type T**
    2.return T

  }
}
var result=Util.MyCustomWrapper();
公共类Util
{
公共静态T MyCustomWrapper()
{
1.调用Axis.GetInstance();//**如何传递类型T**
2.返回T
}
}

该方法可以按照您编写的方式调用:

public static T MyCustomWrapper<T>()
{
    return Axis.GetInstance<T>();
}
publicstatict MyCustomWrapper()
{
返回Axis.GetInstance();
}
公共类Util
{
公共静态T MyCustomWrapper()
{
T customer=Axis.GetInstance();
退货客户;
}
}
加上要编译的其他类型

public interface ICustomer { }
public class Axis
{
    public static T GetInstance<T>() 
    {
        throw new NotImplementedException();
    }
}
公共接口ICustomer{}
公共阶级轴心
{
公共静态GetInstance()
{
抛出新的NotImplementedException();
}
}

返回Axis.GetInstance()“不起作用”怎么写?当我这样写的时候,我得到了这个错误“类型't'必须是引用类型才能使用”@TiffanyHarry那么你必须给你的方法添加一个类型约束:
其中t:class
@TiffanyHarry:Aha,这可能意味着
Axis.GetInstance
的泛型参数定义了一个要求类型参数为引用类型的。在
T
参数上定义相同的(或更严格的)约束:
MyCustomWrapper(),其中T:class
@TiffanyHarry这就是为什么您应该发布实际错误,而不是“它不起作用”@phoog,@O.R Mapper:有一个类型约束。现在它起作用了
public interface ICustomer { }
public class Axis
{
    public static T GetInstance<T>() 
    {
        throw new NotImplementedException();
    }
}