簡體   English   中英

MissingMethodException調用帶有通用參數的方法

[英]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() ,其中FooObject類型的。 除非您提供的T已經成為object否則這基本上是行不通的。

在此處閱讀有關類型轉換的更多信息,包括解釋變窄與變寬的轉換。

您正在嘗試使用這段代碼做什么? 如果您希望始終使用.Foo<string>()或一些類型的子集,則可以只為它們定義顯式強制轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM