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

  • Helen Bradley

    Helen Bradle

    4 Mart 2008
  • ShayLoss

    ShayLoss

    5 Kasım 2009
  • Within Temptation

    Within Tempt

    18 EYLÜL 2006