C# 如何调用不知道实例对象类型的泛型方法

C# 如何调用不知道实例对象类型的泛型方法,c#,generics,object,instance,C#,Generics,Object,Instance,使用此代码: World w = new World(); var data = GetData<World>(w); var-type=; 变量genericType=类型(w); var methodInfo=type.GetMethod(“GetData”); var genericMethodInfo=methodInfo.MakeGenericMethod(genericType); //instance或null:如果定义GetData的类是静态的,则可以设置null:

使用此代码:

World w = new World();
var data = GetData<World>(w);
var-type=;
变量genericType=类型(w);
var methodInfo=type.GetMethod(“GetData”);
var genericMethodInfo=methodInfo.MakeGenericMethod(genericType);
//instance或null:如果定义GetData的类是静态的,则可以设置null:否则需要该类的实例。
var data=genericMethodInfo.Invoke(,new[]{w});
var type=;
变量genericType=类型(w);
var methodInfo=type.GetMethod(“GetData”);
var genericMethodInfo=methodInfo.MakeGenericMethod(genericType);
//instance或null:如果定义GetData的类是静态的,则可以设置null:否则需要该类的实例。
var data=genericMethodInfo.Invoke(,new[]{w});

您不需要编写节。C#如果类型未声明,则隐式决定泛型方法中参数的类型;只需使用:

var data = GetData(w);
这是一个样本

public interface IM
{

}

public class M : IM
{
}

public class N : IM
{

}

public class SomeGenericClass 
{
    public T GetData<T>(T instance) where T : IM
    {
        return instance;
    }
}

您不需要编写第节。C#如果类型未声明,则隐式决定泛型方法中参数的类型;只需使用:

var data = GetData(w);
这是一个样本

public interface IM
{

}

public class M : IM
{
}

public class N : IM
{

}

public class SomeGenericClass 
{
    public T GetData<T>(T instance) where T : IM
    {
        return instance;
    }
}
IM a = new M();
SomeGenericClass s = new SomeGenericClass();
s.GetData(a);