SORU
10 EKİM 2008, Cuma


C# Jenerik't kazandı Temsilci Türü Kısıtlamaları izin

Bu C sınıfı tanımlamak mümkündür*. böyle

class GenericCollection<T> : SomeBaseCollection<T> where T : Delegate

Beni hayat için bu son gece elde edemedim .NET 3.5. Kullanmayı denedim

delegate, Delegate, Action<T> and Func<T, T>

Bu bir şekilde kabul edilebilir olması gerekir gibi geliyor bana. Benim kendi EventQueue uygulamaya çalışıyorum.

Sadece bu ilkel yaklaşım aklınızda] ben de yapıyordum.

internal delegate void DWork();

class EventQueue {
    private Queue<DWork> eventq;
}

Ama işlevleri farklı türleri için aynı tanımı yeteneği kaybettim.

Düşünceler?

CEVAP
10 EKİM 2008, Cuma


Sınıf genel kısıtlar olarak kullanılamaz - Numaralama başka bir ediliyor.

Delegeler, sen-ebilmek almak en yakın", kontrol etmek için belki de yansıtma (statik oluşturucu örneğin, T . o sınıf": ^em>bir temsilci:

    static GenericCollection()
    {
        if (!typeof(T).IsSubclassOf(typeof(Delegate)))
        {
            throw new InvalidOperationException(typeof(T).Name   " is not a delegate type");
        }
    }

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • SegaAmerica

    SegaAmerica

    5 Mart 2008
  • SellerDp

    SellerDp

    27 EKİM 2009