Укажите, что интерфейс может быть реализован только ссылочными типами C #

Если я объявляю интерфейс на 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

не работает (очевидно), но, может быть, есть другой способ сделать то же самое?

7
задан Tomas Aschan 5 June 2011 в 17:48
поделиться