我有一个包含两个方法的类的库(以及其他一些不相关的方法):
public T Foo<T>()
{
// Real version does some other things, but this is the gist.
return (T)this.Foo();
}
public object Foo()
{
// Do stuff and return something.
}
到目前为止一切顺利。这个库编译。
然而,在致电.Foo<string>()
时,我得到了MissingMethodException
。可能是什么导致了这个?一切都很好。
作为参考,没有泛型的Foo
是遗留方法,我将介绍通用版本以帮助进行投射等。
答案 0 :(得分:0)
我同意MissingMethodException是由旧dll引起的。但是,一旦你解决了这个问题,这仍然无法解决。您无法将对象隐式转换为字符串。在运行时,您的来电.Foo<string>()
会调用(String)Foo()
,其中Foo
的类型为Object
。除非您提供的T已经object
,否则这基本上不会有效。
你试图用这段代码做什么?如果您希望始终使用.Foo<string>()
或少数几种类型的子集,那么您可以为它们定义显式的强制转换。