2012-09-29 19 views
5

içerisinde wildcard geçmek? C# 'de gerçek bir joker değildir, ancak, C#' da doğru bir şekilde nasıl yazarsın ki, SomeClass herhangi bir sınıfı argüman olarak alabilir mi? Nesneyi kullanarak denedim, ancak sonra bir hata alıyorum ... "...nasıl şu var C#

Teşekkürler!

cevap

6

Sen bir kısıtlama olmadığı kadar YT olarak hatta aynı şey olabileceğini unutmayın (yani benim numunede Y) ikinci tip argüman belirtmek gerekir.

public class Foo<Y> : Goo{ 
    public SomeClass<Y> Value; 

    public void Setup() { Value = new SomeClass<Y>(); } 
} 
:

public class Foo<T, Y> : Goo 
    where T: SomeClass<Y>, new() 

Diğer bir seçenek derleyici önceden bildiği için size SomeClass<T> varsayılan kurucuya sahip olduğunu yeni() kısıtlama gerekmez, yalnızca genel sınıfta SomeClass<Y> kullanmanız gerekiyorsa sadece ikinci sınıf belirtmektir