【发布时间】:2015-09-24 11:53:39
【问题描述】:
是否可以(在c# 中)比较开放的泛型参数,例如T 在:
public void CompareMethod<T>() { ... }
具有开放的泛型接口(或类)的类型?
这是一个示例界面:
public interface IExample<T> { }
然后以某种方式在方法内部像这样比较它们:
public void CompareMethod<T>()
{
if (typeof(IExample<>) == typeof(T))
{
//execute
}
}
if 正文在调用这样的方法时不会执行:
CompareMethod<IExample<object>>();
重要我事先并不知道CompareMethod的open泛型参数中会输入哪些封闭类型。
【问题讨论】:
-
如果你需要比较它的
T参数,你为什么要使用泛型类型参数?你能澄清一下你想要做什么吗? -
我同意@YuvalItzchakov,这听起来像XY Problem
-
我在应用了 MVVM 模式的 WPF 应用程序中使用它。我有一项服务,它通过提供 ViewModel 的类型来显示窗口/对话框。这些 ViewModel 实现了一些接口。我已经为这项服务分配了一项职责,它还对其中一些视图模型进行了一些额外的工作。但这项额外的工作仅适用于一组选择性的接口。
标签: c# generics reflection