我通过派生现有的 .NET 框架类来扩展它。如何将基类型的对象转换为派生类型?
public class Results { //Framework methods }
public class MyResults : Results { //Nothing here }
//I call the framework method
public static MyResults GetResults()
{
Results results = new Results();
//Results results = new MyResults(); //tried this as well.
results = CallFrameworkMethod();
return (MyResults)results; //Throws runtime exception
}
我知道发生这种情况是因为我试图将基类型转换为派生类型,并且如果派生类型具有其他属性,则不会分配内存。当我添加附加属性时,我不在乎它们是否初始化为 null。
如何在不进行手动复制的情况下执行此操作?
你不能。如果results
不指的是MyResults
(例如,如果CallFrameworkMethod
返回一个基数Results
实例),那么强制转换将无法做到这一点:您需要创建一个新的MyResults
,基于现有的非MyResults
。强制转换是指改变编译时类型参考,而不是更改引用对象的具体类型。
您可以使用 Reflection 或 AutoMapper 等工具来帮助初始化新的MyResults
对象——但是一个新的MyResults
对象一定存在,因为你无法告诉基数Results
对象成为MyResults
object.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)