簡體   English   中英

將類型傳遞給由Type對象確定的泛型方法

[英]Pass type to generic method determined by Type object

我有一個我想要調用的對象的泛型方法。 但是在那一刻我不知道T,我所知道的是T的類型,它被設置為對象的屬性。

public calass SomeClass{

    public Type SomeType { get; set; }

    public void SomeMethod<T>(){

    }    
}

...

var instance = new SomeClass();

...

可以這樣做嗎?

instance.SomeMethod<SomeType>();

是的,您可以使用Reflection:調用它Reflection:

var method = instance.GetType().GetMethod("SomeMethod")
             .MakeGenericMethod(instance.SomeType);

method.Invoke(instance);

另請注意, SomeType是屬性的名稱,而不是屬性的類型。當您要調用泛型方法時,需要指定類型。

您可以在SomeMethod <T>中添加以下檢查:

if (!SomeType.IsAssignableFrom(typeof(T))) throw new Exception("Expecting type stored in SomeType.");

或者我會將類更改為模板化:

public class SomeClass<T>
{
    public Type InstanceType { get { return typeof(T); } }

    public void SomeMethod<T> () { }
}

暫無
暫無

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

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