是否可以(在c#
中)比较开放的通用参数,例如T
in:
public void CompareMethod<T>() { ... }
具有开放通用接口(或类)的类型?
这是一个示例界面:
public interface IExample<T> { }
然后在方法中以某种方式比较它们:
public void CompareMethod<T>()
{
if (typeof(IExample<>) == typeof(T))
{
//execute
}
}
当调用这样的方法时,if
正文将不会执行:
CompareMethod<IExample<object>>();
重要我事先并不知道将在CompareMethod
的开放通用参数中输入哪些封闭类型。
答案 0 :(得分:1)
您需要致电GetGenericTypeDefinition()
上的T
才能将其与IExample<>
进行比较:
public void CompareMethod<T>()
{
if (typeof(T).IsGenericType &&
typeof(T).GetGenericTypeDefinition() == typeof(IExample<>)) {
{
//execute
}
}