【发布时间】:2019-01-24 13:09:55
【问题描述】:
我想用这样的 ValueTuple 初始化一个对象:
var m = new SearchResultViewModel
{
(Elements, SomeNumber) = this.SearchResultItems()
};
private (List<string> a, int b) SearchResultItems()
{
[...]
return (list, 1024);
}
在哪里
public class SearchResultViewModel
{
public IList<string> Elements { get; set; }
public long SomeNumber { get; set; }
}
这样的(或类似的)可能吗?编译器给了我一堆错误: 无法使用集合初始化程序初始化类型“SearchResultViewModel”,因为它没有实现“System.Collections.IEnumerable”, 初始化器成员声明器无效, 当前上下文中不存在名称“元素”, 当前上下文中不存在名称“SomeNumber”,
虽然这段代码可以正常工作:
var m = new SearchResultViewModel();
(m.Elements, m.SomeNumber) = this.SearchResultItems();
这也可以编译(但我不想调用该函数两次):
var m = new SearchResultViewModel()
{
Elements = this.SearchResultItems().Item1,
SomeNumber = this.SearchResultItems().Item2
};
【问题讨论】:
-
不可能,您需要在 ViewModel 中创建 ValueTuple 单个属性
-
非常感谢您,MistyK。