[英]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.