На этой неделе я столкнулся с проблемой неявных преобразований в C # для коллекций.Хотя это (использование implicit
), возможно, не является нашим последним подходом, я хотел, по крайней мере, закончить код, чтобы предложить команде в качестве опции.Я свел проблему к следующему примеру:
У меня есть два класса в моем примере: один, представляющий бизнес-объект (Foo), и другой, представляющий версию клиента (View Object) этого бизнес-элемента (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?) способ конвертировать объекты в одном кадре.Есть идеи?
Заранее спасибо.
Редактировать Исправлена опечатка в примере