0
假設通過反射(或使用動態)調用方法時,最安全的方法是選擇最具體的方法,如普通代碼中那樣?反射和動態方法解析
讓我們來考慮下面的代碼:
public class Animal {}
public class Dog : Animal {}
public class MyClass
{
public void SayHello(Dog animal)
{
Console.WriteLine("Hello dog!");
}
public void SayHello(Animal animal)
{
Console.WriteLine("Hello animal!");
}
}
當調用它:
var myClass = new MyClass();
// Classic invocation
myClass.SayHello(new Dog());
// Reflection
var method = myClass.GetType().GetMethod("SayHello", new[] { typeof(Dog) });
method.Invoke(myClass, new object[] { new Dog() });
// dynamic
((dynamic)myClass).SayHello((dynamic)new Dog());
當調用SayHello
是正確的方法調用使用傳統方法解決?換句話說,輸出將始終爲"Hello dog!"
?
從一個快速測試的答案似乎是是,但我無法找到MSDN上的任何特定文檔。
我想知道的最好方法就是自己試試,你已經有了代碼:) – Black0ut