2011-08-02 43 views
2

Java實現:類限制JAVA與C#implemetation

我有這個抽象類:

public abstract class Base<T> {} 

和派生:

public class MyClass<W extends Base> {} //Compiles and works just fine 

注:JAVA我不需要將Base聲明爲約束時,將通用類型添加到Base。

.NET實現

public class MyClass<W> where W : Base //Doesn't compile 
public class MyClass<W> where W : Base<T> //Doesn't compile - (what is T ?) 

我需要能夠聲明一個泛型類的約束,而無需指定泛型類型(就像在JAVA) 我能做到這在.net ???

+2

不是Java版本更好,如果'MyClass >' – irreputable

回答

0

您需要包括T中的泛型類型參數列表:

public class MyClass<W, T> where W : Base<T> 

用法:

var myObject = new MyClass<ClassExtendingBase, string>(); 

public abstract class Base<T> { } 

public class ClassExtendingBase : Base<string> { } 
+0

如何使用它,'新的MyClass ,String>'? – irreputable