Если я объявляю интерфейс на C #, могу ли я явно объявить, что любой тип, реализующий этот интерфейс, является ссылочным типом?
Причина, по которой я хочу это сделать, заключается в том, что везде, где я использую интерфейс в качестве параметра типа, мне не нужно указывать, что реализующий тип также должен быть ссылочным типом.
Пример того, что я хочу сделать:
public interface IInterface
{
void A();
int B { get; }
}
public class UsingType<T> where T : IInterface
{
public void DoSomething(T input)
{
SomeClass.AnotherRoutine(input);
}
}
public class SomeClass
{
public static void AnotherRoutine<T>(T input)
where T : class
{
// Do whatever...
}
}
Поскольку аргумент для SomeClass.AnotherRoutine ()
должен быть ссылочным типом, я получу здесь ошибку компилятора, когда вызываю метод, предлагая заставить T
быть ссылочным типом ( где T: IInterface, class
в объявлении UsingType
). Могу ли я как-то применить это уже на уровне интерфейса?
public interface IInterface : class
не работает (очевидно), но, может быть, есть другой способ сделать то же самое?