C# 4.0 yazmanız size böyle bir şey yapabileceğini:
dynamic obj = GetDynamicObject();
if (obj != null && obj.GetType().GetMethod("DoSomething") != null)
{
obj.DoSomething();
}
Ama bir tür ilk etapta bir yöntem yansıma kullanmaktır sahip olmadığını söylemek için tek yol; Bu yüzden yukarıdaki yaklaşım size hiçbir şey satın almaz (MethodInfo
'u GetMethod
numaralı telefondan ve sadece Invoke
numaralı telefondan alabilirsiniz).
Edit: Orada değilken bile yöntemi çağırmaya açıksanız, Yuriy's answer muhtemelen sizin aradığınız şeydir. Orijinal cevabınız, sorunuzu doldurulan şeye doğru bir yanıttı: " varsa, C# yöntemi 'u nasıl çağırırsınız."
sen demek istiyorsunuz ne –
Yansıma ile bile, yöntemin prototipini hesaba katmanız gerekir: 'int Foo (dize çubuğu)', çift Foo (int bar, IDictionary quux) 'ile aynı değildir. –
Kısmi yöntemleri mi arıyorsunuz? http://msdn.microsoft.com/en-us/library/6b0scde8.aspx – Ani