我通过派生它来扩展现有的.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
}
Run Code Online (Sandbox Code Playgroud)
我知道这发生在我尝试将基类型转换为派生类型时,如果派生类型具有其他属性,则不会分配内存.当我添加其他属性时,我不在乎它们是否被初始化为null.
如果不进行手动复制,我该怎么做?
ito*_*son 11
你不能.如果results没有引用a MyResults(例如,如果CallFrameworkMethod返回一个基本Results实例),则转换将不会这样:你需要MyResults根据现有的非创建一个新的MyResults.转换是关于更改引用的编译时类型,而不是更改引用对象的具体类型.
您可以使用诸如Reflection或AutoMapper之类的工具来帮助初始化新MyResults对象 - 但MyResults必须有一个新对象,因为您不能告诉基础Results对象成为MyResults对象.
| 归档时间: |
|
| 查看次数: |
7916 次 |
| 最近记录: |