簡體   English   中英

對象引用方法調用

[英]Object reference method call

void doStuff(Object obj)
{
   obj.method1();
}

該代碼無法編譯,因為編譯器無法在Object類中找到method1 ,但是我知道obj將實現此方法。 我無法投射對象,因為我不知道類型。

這在VB中是可能的。 我該如何在C#中做到這一點?

您可以使用反射來獲取對象的類型獲取方法並調用它:

    class SomeClass
{
    public void method1()
    {
        Console.WriteLine("Method1() called");
    }
}

class Program
{
    static void DoStuff(Object obj)
    {
        MethodInfo method = obj.GetType().GetMethod("method1");

        if(method != null) //check for null - that is returned if there is no method1
            method.Invoke(obj, new Object[]{});
    }
    static void Main(string[] args)
    {
        SomeClass someClass = new SomeClass();

        DoStuff(someClass);
    }
}

LE:但是為了給我們更好的建議,我們將需要更多有關您要實現的目標的信息,因此您可以考慮一個接口,這可能比使用反射更好的解決方案。

如果您不知道將使用哪種類型,請使用一個接口並將此接口用作參數,而不是objext類型;)

暫無
暫無

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

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