【发布时间】:2015-12-31 12:50:07
【问题描述】:
我正在尝试学习 MVVM,并在我的 ViewModel 中添加了将模型转换为 ViewModel 的隐式运算符,反之亦然,但现在的问题是如何将模型列表转换为 ViewModel 列表?
以下是我尝试用于列表转换但不起作用的结构代码:
Person.cs
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
PersonViewModel.cs
class PersonViewModel : Person
{
public string FullName { get; set; }
public static implicit operator List<PersonViewModel>(IList<Person> person)
{
if (person == null)
return null;
return person.Select(c => new PersonViewModel(c)).ToList(); // This is not working
}
public static implicit operator PersonViewModel(Person person)
{
return new PersonViewModel
{
FirstName = person.FirstName,
LastName = person.LastName,
};
}
public static implicit operator Person(PersonViewModel personViewModel)
{
return new Person
{
FirstName = personViewModel.FirstName,
LastName = personViewModel.LastName,
};
}
}
【问题讨论】:
-
好吧,这可能是个愚蠢的问题,但您不会错过“新”关键字吗?
-
@ViktorLaCroix 编辑了我的帖子,但这次它抱怨“PersonViewModel 不包含带 1 个参数的构造函数”
-
它是否包含带有 1 个参数的构造函数? :D 如果不是并且你不想那样做,那么你应该做类似 person.Select(x => new PersonViewModel(){FullName = c.FullName}).ToList();
-
@ViktorLaCroix 以及 c.FullName 的来源?
-
@zee 这是你的代码,不是我们的。