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

  • BioHunta

    BioHunta

    28 Mayıs 2006
  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • EminemMusic

    EminemMusic

    9 ŞUBAT 2007