SORU
3 EYLÜL 2008, ÇARŞAMBA


C Merkez çift#?

/Dönem okudum duydum ama tam olarak ne anlama geldiğini bilmiyorum.

Bu tekniği kullanmalıyım ve Nasıl Kullanmalıyım? Herkes iyi bir kod örneği verebilir?

CEVAP
3 EYLÜL 2008, ÇARŞAMBA


Örnek:Ziyaretçi desen çift gönderme nesne yönelimli bir şekilde yapmanın bir yolu.

Belirli bir bağımsız değişken çalışma zamanında kendi türüne bağlı için karar yerine derleme zamanı istediğiniz zaman için yararlıdır.

Tanımı:Çift kişilik Merkez, özel bir durumbirden fazla gönderme.

Bir nesne üzerinde sanal bir yöntem çağırdığınızda, tek nesne türüne bağlıdır denir, çünkü tek merkez olarak kabul edilir.

Merkez çift için, nesnenin türü ve yöntemi de tek argüman bu tür her ikisi de dikkate alınır. Bu bağımsız değişken türü Çift gönderme derleme zamanında statik olarak yerine zamanında belirlenen hariç yöntemi aşırı çözünürlük gibi.

Çoklu gönderme, bir yöntem birden çok bağımsız değişken olarak geçirilen ve kullanılan her değişken türüne bağlıdır. Bu tür değerlendirilen sipariş diline bağlıdır. LİSP, ilk gelen her tür son denetler.

Birden çok dil sadece işlevi delcarations ve tür parametreleri kullanan genel yöntemler, gibi olmayan genel işlevleri kullanmak gönderme.

Çift gönderme C#yapabilirsiniz tek nesne bir değişken ve belirli türleri: özel yöntemler ile bir yöntem bildirin

using System.Linq;  

class DoubleDispatch
{ 
    public T Foo<T>(object arg)
    { 
        var method = from m in GetType().GetMethods()
                   where    m.Name == "Foo" 
                         && m.GetParameters().Length==1
                         && arg.GetType().IsAssignableFrom
                                           (m.GetParameters()[0].GetType())
                         && m.ReturnType == typeof(T)
                   select m;

        return (T) method.Single().Invoke(this,new object[]{arg});          
    }

    public int Foo(int arg) { /* ... */ }

    static void Test() 
    { 
        object x = 5;
        Foo<int>(x); //should call Foo(int) via Foo<T>(object).
    }
}       

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Epic Tutorials for iPhone, iPad and iOS

    Epic Tutoria

    18 EYLÜL 2011
  • Maya Learning Channel

    Maya Learnin

    23 HAZİRAN 2010
  • The Scary Snowman

    The Scary Sn

    1 ŞUBAT 2011