【发布时间】:2011-06-08 22:11:59
【问题描述】:
本周我遇到了一个关于 C# 中对集合进行隐式转换的问题。虽然这(使用implicit)可能不是我们的最终方法,但我想至少完成代码以提供团队作为选项。我将问题归结为以下示例案例:
我的示例中有两个类:一个代表业务对象 (Foo),另一个代表此业务项 (FooVO) 的客户端版本(视图对象),定义如下...
public class Foo
{
public string Id {get; set;}
public string BusinessInfo {get; set;}
}
public class FooVO
{
public string Id {get; set;}
public static implicit operator FooVO( Foo foo )
{
return new FooVO { Id = foo.Id };
}
}
我的问题是当我有一个 Foo 对象列表并想使用我的隐式运算符将它们转换为 FooVO 对象列表时。
List<Foo> foos = GetListOfBusinessFoos(); // Get business objects to convert
我试过了
List<FooVO> fooVOs = foos; // ERROR
和
List<FooVO> fooVOs = (List<FooVO>) foos; // ERROR
甚至
List<FooVO> fooVOs = foos.Select( x => x ); // ERROR
我知道我可以循环执行此操作,但我希望使用直接(LINQ?)的方式一次性转换对象。有什么想法吗?
提前谢谢你。
编辑 修正了示例中的错字
【问题讨论】:
-
您在该示例中对
FooVO的隐式转换实际上返回了Foo,这是故意的吗? -
@Chris Walsh - 不,这是一个错字。我会纠正它。谢谢你抓住它。
标签: c# linq implicit-conversion