通过强制转换C#进行动态转换
我有一些我无法控制的代码.此代码接受一个对象参数,并尝试将其转换为编译时已知的类型,如下所示:
KnownType item = (KnownType) parameter; 在C#中是否可以设计一个自定义类MyClass(不是从KnownType派生),它可以作为参数传递给上面的代码并通过上面的代码转换为KnownType,前提是MyClass可以使用其成员方法将自身转换为KnownType: protected KnownType ConvertToKnownType() { // conversion code goes here } 我试图实现这样的自定义转换运算符: public static implicit operator KnownType(MyClass source) { KnownType result; // conversion goes here return result; } 但它不起作用(它没有使用).我是否正确地假设转换运算符仅在编译时知道源类型,目标类型和转换运算符时才起作用? 编辑: 为了清除问题,KnownType实际上是DataRowView,而MyClass是DataRowView的包装类,必须从其他类型派生. MyClass保留对DataRowView的引用.我没有将ComboBox.DataSource绑定到DataView,而是将其绑定到IList< MyClass>但我仍然需要ComboBox能够访问DataRowView列值,就好像我绑定了IList< DataRowView>.不幸的是,强制转换操作符的工作方式与我担心的方式相同:它只考虑编译时类型信息来进行转换(但它在同一继承树中的类型之间进行转换时会使用运行时类型信息). 解决方法
不,这是不可能的.如果您能够从该类派生您的类,则提供的强制转换才会成功.任何不基于继承的转换都需要执行转换的类执行与其正在执行的操作不同的操作.
是. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |