通用方法是...
public void PrintGeneric2<T>(T test) where T : ITest
{
Console.WriteLine("Generic : " + test.myvar);
}
我从 Main() 调用它...
Type t = test2.GetType();
PrintGeneric2<t>(test2);
我收到错误“CS0246:找不到类型或命名空间名称 't'”和“CS1502:最佳重载方法匹配 DoSomethingClass.PrintGeneric2(T) 具有无效参数”
这与我之前的问题有关:C#:传递通用对象 https://stackoverflow.com/questions/9664912/c-sharp-passing-a-generic-object
我读过,如果不使用反射或方法信息,则无法在运行时确定泛型类型,但我不太清楚在这种情况下如何执行此操作。
如果您能启发我,谢谢=)
如果您确实想使用编译时未知的类型参数调用泛型方法,您可以编写如下内容:
typeof(YourType)
.GetMethod("PrintGeneric2")
.MakeGenericMethod(t)
.Invoke(instance, new object[] { test2 } );
但是,正如其他回复所述,泛型可能不是您的情况的最佳解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)