在没有类约束的情况下将一个泛型转换为另一个泛型
|
我有以下代码:
public interface IDrilldown
{
void AddCriteria<T>(T Criterion);
}
public class MyClass<W> : IDrilldown // where W : class
{
void IDrilldown.AddCriteria<T>(T Criterion)
{
W value = Criterion as W;
...
}
}
不幸的是,除非W在代码中具有约束,否则我上面的强制转换将不起作用。我想使用值类型。有可能吗?
我不能使W和T具有相同的类型。我的接口没有全局关联的类型,只有内部数据类型。
这样一来,我可以拥有所有具有不同T \的列表
没有找到相关结果
已邀请:
2 个回复
补蹲农界维
这样做的唯一缺点是,ѭ2use将使用转换器在内部对象之间切换,因此
将起作用并返回
,而不是引发异常。 为了阐明其工作原理,文档中指出: 为使转换成功,值必须实现IConvertible接口,因为该方法只是将对一个合适的IConvertible方法的调用包装起来。该方法要求支持将值转换为conversionType。 因此,要使此方法与自定义类型一起使用,您将需要实现
接口才能从一种自定义类型转换为任何其他类型。在上面的代码示例中,如果
和
是相同类型,则即使自定义对象未实现
,
也会成功。
际恃啸称桅