日期:2014-05-18  浏览次数:20823 次

关于泛型T问题
我有这样一个需求
var client=GetClient<ChatServiceClient>(url);

public T GetClient<T>(string url)
{
 return new T(url);
}

这是个未成品,暂无法解决问题!

我白天找了些资料 如果是无参数的可以增加where T: new() 来解决问题
但我现在我知道我每次传进去的类是需要1个参数来实例化的!
这些类目前无法获取到共同点做成接口之类的!所以我想依靠泛型来解决问题!
不知道谁有可以解决问题的方法!

------解决方案--------------------
可以用反射强行实例化一个对象 然后将返回值类型转换为T
------解决方案--------------------
只能反射了。
typeof(T)然后再反射创建实例。

不过没有办法保证T类型有一个参数的构造函数。
------解决方案--------------------
要创建T实例只能用反射,其实即使你能用new实现,c#内部还是用反射生成实例,所以这样效率都很低,你应该避免创建泛型参数的实例,