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