Ограничения класса реализации JAVA для C # - PullRequest
2 голосов
/ 02 августа 2011

Java-реализация:

У меня есть этот абстрактный класс:

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 ???

1 Ответ

0 голосов
/ 02 августа 2011

Вам необходимо включить 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> { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...