【发布时间】:2010-02-17 22:59:23
【问题描述】:
我创建了这个方法,它是一个对象工厂:
public static T GetService<T>(T serviceInterface)
{
if (serviceInterface.Equals(typeof(IMemberService)))
{
return (T)(object)new MemberService();
}
else if (serviceInterface.Equals(typeof(ILookupService)))
{
return (T)(object)new LookupService();
}
throw new ArgumentOutOfRangeException("No action is defined for service interface " + serviceInterface.Name);
}
现在,我想更进一步,消除对“serviceInterface”参数的需要,但我的问题是 - 我不知道如何将类型参数 T 与接口进行比较:做
T.Equals(typeof(ILookupService))
给出编译器错误:“T”是一个“类型参数”,在给定的上下文中无效。
任何想法如何将类型参数与接口进行比较?
谢谢你, 安德烈
【问题讨论】:
-
你可以像这样从 serviceInterface 变量中选择值 -> stackoverflow.com/a/44114122/1580548