Можно ли (в c#
) сравнить открытый общий параметр, например. T
в:Сравните открытый общий параметр с открытым общим интерфейсом типа
public void CompareMethod<T>() { ... }
с типом открытого универсального интерфейса (или класса)?
Вот пример интерфейса:
public interface IExample<T> { }
А потом как-то внутри метода сравнивать их, как это:
public void CompareMethod<T>()
{
if (typeof(IExample<>) == typeof(T))
{
//execute
}
}
if
тело не будет выполняться при вызове метода, как это:
CompareMethod<IExample<object>>();
Это important, что я не знаю заранее, es будут введены в открытый общий параметр CompareMethod
.
Почему вы используете параметр универсального типа, если вам нужно сравнить его 'параметр T'? Не могли бы вы уточнить, что вы пытаетесь сделать? –
Я согласен с @YuvalItzchakov, это звучит как [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – juharr
Я использую это в приложении WPF с использованием шаблона MVVM. У меня есть служба, которая показывает окна/диалоги, предоставляя тип ViewModel. Эти ViewModels реализуют некоторые интерфейсы. Я назначил ответственность за эту услугу за то, что она также выполняет некоторую дополнительную работу над некоторыми из этих режимов просмотра. Но эта дополнительная работа применяется только на выборочном наборе интерфейсов. – QuantumHive