C# 'daki herhangi bir nesnede "sınıf düzeyinde üye" anlamında değil, "statik olarak tanımlanmış" anlamında statik olarak tanımlanmış (statik olarak) bir nesneyi dinamik olarak çağırmak istediğimde, kullanabilirim yansıma bu yönteme ele almak ve onu çağırmak için: DynamicObject
cevap veren devralmasını tarafından nesneler dinamik yapılmış,Dinamik bir nesnede bir yöntemi dinamik olarak nasıl çağırabilirim?
typeof(Foo).GetMethod("Bar").Invoke(foo, new object[] { /* params */ });
Ancak üzere (tanımsız) örnek yöntemi TryInvokeMember
kullanarak çağırır ve dinamik yöntemler sınıf maruz kalmaz yanıt açık nedenlerle, yansıma yoluyla. Bu, TryInvokeMember
tarafından yanıtlanması gereken bir yöntem için bir yöntem tanıtıcısı alamam anlamına gelir.
İronik olarak, dynamic
nesnesinde dinamik olmayan bir yöntemi, dynamic
nesnesinde tanımlanmış bir yöntemi çağıracağınız kadar kolay bir şekilde dinamik olarak çağıramazsınız.
Doğrudan TryInvokeMember
numaralı telefonu aramayı düşündüm, ancak ilk bağımsız değişken, soyut bir sınıf olan InvokeMemberBinder
örneğinin olması gerekir. Dinamik bir nesne üzerinde dinamik bir yöntemi çağırmak için bir sınıf uygulamak zorunda kalırsam, yanlış bir şey yapmalıyım.
nasıl hedef sınıfı bunu uygulamıyor yapar bilerek adıyla bir dynamic
nesne üzerinde bir yöntem çağırabilir ve TryInvokeMember
kullanarak cevap gerektiğini?
Sesler eğlenceli. Birisi gerçekten destekli bir çözümün olup olmadığını görmek için sabırsızlanıyorum çünkü bu çalışmayı durdurduğunda artık etrafta olmayacağım. – zneak
Öte yandan, derleyicinin halihazırda yaptığı şeyden bu yana, çalışmayı hiç durduramayacaksınız, çünkü bu, bugün inşa edilen 'dynamic 'işlevini kullanarak herhangi bir uygulamayı öldürecek. – zneak
@zneak Doğru, bunun oldukça güvenli bir bahis olduğunu düşünürdüm. Türlerin gizlendiğinden emin olmak için bu kadar büyük uzunluklara girmeleri şaşırtıcıdır. – Trillian