[英]MissingMethodException calling a method with generic parameter
我有一個包含帶有兩個方法的類的庫(以及其他一些不相關的方法):
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
是傳統方法,我將介紹泛型版本以幫助進行鑄造等。
我同意MissingMethodException是由於舊的dll引起的。 但是,一旦解決此問題,它仍然將不起作用。 您不能將對象隱式轉換為字符串。 在運行時,您的調用.Foo<string>()
將調用(String)Foo()
,其中Foo
是Object
類型的。 除非您提供的T已經成為object
否則這基本上是行不通的。
在此處閱讀有關類型轉換的更多信息,包括解釋變窄與變寬的轉換。
您正在嘗試使用這段代碼做什么? 如果您希望始終使用.Foo<string>()
或一些類型的子集,則可以只為它們定義顯式強制轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.