我正在尝试为自定义类型编写转换器类 - 将一种类型(及其所有属性)转换为另一种具有匹配属性的类型.
当属性也是自定义类型而不是简单类型时,问题就出现了.
自定义类型都是相同的,除了它们位于同一解决方案中的不同命名空间中.
TypeTwo对象是Webservice引用.
例如
public TypeOne ConvertToTypeTwo (TypeTwo typeTwo)
{
var typeOne = new TypeOne();
typeOne.property1 = typeTwo.property1; //no problem on simple types
typeOne.SubType = typeTwo.SubType; //problem!
...
}
Run Code Online (Sandbox Code Playgroud)
我上面的错误是:
错误166无法将类型'TypeTwo.SubType'隐式转换为'TypeOne.SubType'
我试过像这样的铸造
typeOne.SubType = (TypeOne)typeTwo.SubType;
Run Code Online (Sandbox Code Playgroud)
但得到:
错误167无法将类型'TypeTwo.SubType'转换为'TypeOne.SubType'
就像这样
typeOne.SubType = typeTwo.SubType as TypeOne;
Run Code Online (Sandbox Code Playgroud)
但得到:
错误168无法通过引用转换,装箱转换,拆箱转换,换行转换或空类型转换将类型'TypeTwo.SubType'转换为'TypeOne.SubType'
我不确定我有什么其他选择,或者我只是做了一些根本错误的事情.有什么想法吗?
如果两个子类型是不同的类型,则必须编写单独的转换器以在两种类型之间进行转换.
例如:
public TypeOne ConvertToTypeTwo (TypeTwo typeTwo)
{
var typeOne = new TypeOne();
typeOne.property1 = typeTwo.property1; //no problem on simple types
typeOne.SubType = ConvertToTypeTwo(typeTwo.SubType); //problem!
}
public TypeOneSubtype ConvertToTypeTwo(TypeTwoSubType typeTwo)
{
var subOne = new TypeOneSubType;
subOne.property1 = typeTwo.property1;
// etc.
}
Run Code Online (Sandbox Code Playgroud)
你不能这样做.即使两种具有完全相同的布局相同(与同类型相同的字段),你不能 投从一个到另一个.不可能.
您需要做的是创建一个可以从一种类型转换为另一种类型的转换器(作为方法,单独的类或转换运算符).
| 归档时间: |
|
| 查看次数: |
3275 次 |
| 最近记录: |