Тип объекта вопроса - PullRequest
       1

Тип объекта вопроса

0 голосов
/ 02 февраля 2011

В C # у меня есть интерфейс, и некоторые классы будут реализовывать этот интерфейс.У меня есть универсальный служебный класс, который я хочу ограничить, чтобы служебный класс мог быть объявлен только с использованием типов, реализующих этот интерфейс, как показано ниже, как я могу это сделать ??

public interface IMyInterface 
{}

public class A : IMyInterface {} // can pass into UtilityClass
public interface B : IMyInterface{}
public class C : B {} // can pass into UtilityClass
public class D {} // can Not pass into UtilityClass

public class UtilityClass<T is IMyInterface>
{
// some utility function
}

Спасибо.

Ответы [ 4 ]

6 голосов
/ 02 февраля 2011

Вы ищете общее ограничение. Они выражаются в C # с помощью ключевого слова where после имени класса.

public class UtilityClass<T> where T:IMyInterface
{

}
1 голос
/ 02 февраля 2011
public class UtilityClass<T> where T: IMyInterface
{
// some utility function
}

Они называются ограничениями, вы можете прочитать больше здесь http://msdn.microsoft.com/en-us/library/d5x73970.aspx

0 голосов
/ 02 февраля 2011

Вы можете добавить ограничения к универсальным классам следующим образом:

public class UtilityClass<T> where T : IMyInterface
{
// some utility function
}
0 голосов
/ 02 февраля 2011

используйте предложение where:

public interface IMyInterface 
{}


public class UtilityClass<T> where T : IMyInterface
{
// some utility function
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...