如何为延迟加载对象赋值?
How to assign value to a Lazy Loading object?
我是延迟加载的新手,但我也希望能够在创建延迟加载对象后填充它。可能吗?
当我想将 "Lazy loading list" 定义为我创建的普通列表时出现此错误:
无法隐式转换类型:'System.Collections.Generic.List' 到 'System.Lazy>'
代码如下:
List<Currency> currencyOfMids = new List<Currency>();
obj.Merchant.CurrencyOfMids = currencyOfMids;
我也尝试将我的列表识别为惰性列表,但这次我无法使用 "Add" 命令填充它:
foreach (ListItem currencyItem in selectedCurrencies)
currencyOfMids.Add(new Currency() { Code = currencyItem.Text, Id = int.Parse(currencyItem.Value) });
'Lazy>' 不包含 'Add' 的定义并且没有扩展方法 'Add' 可以找到接受类型 'Lazy>' 的第一个参数(你是否缺少一个 using指令还是程序集引用?)
我认为您正在寻找 Lazy<T>.Value
属性。值 属性 是您访问 T 对象的方式(在您的例子中,是 List<Currency>
。该值会在您第一次访问它时自动初始化(这就是它变得懒惰的原因)。您可以t 分配给值,但您可以遍历 currencyOfMids
并将每个值添加到 obj.Merchant.CurrencyOfMids.Value
.
foreach (ListItem currencyItem in selectedCurrencies)
currencyOfMids.Value.Add(new Currency() { Code = currencyItem.Text, Id = int.Parse(currencyItem.Value) });
您可以分配给 Lazy<T>
,将代码传递给它,以便在需要时延迟创建列表:
obj.Merchant.currencyOfMids = new Lazy<List<Currency>>(
() => ... code to generate currencies ...
);
现在,当您需要列表时,您可以访问 currencyofMids.Value
,如果尚未生成,它将生成它。
我是延迟加载的新手,但我也希望能够在创建延迟加载对象后填充它。可能吗?
当我想将 "Lazy loading list" 定义为我创建的普通列表时出现此错误:
无法隐式转换类型:'System.Collections.Generic.List' 到 'System.Lazy>'
代码如下:
List<Currency> currencyOfMids = new List<Currency>();
obj.Merchant.CurrencyOfMids = currencyOfMids;
我也尝试将我的列表识别为惰性列表,但这次我无法使用 "Add" 命令填充它:
foreach (ListItem currencyItem in selectedCurrencies)
currencyOfMids.Add(new Currency() { Code = currencyItem.Text, Id = int.Parse(currencyItem.Value) });
'Lazy>' 不包含 'Add' 的定义并且没有扩展方法 'Add' 可以找到接受类型 'Lazy>' 的第一个参数(你是否缺少一个 using指令还是程序集引用?)
我认为您正在寻找 Lazy<T>.Value
属性。值 属性 是您访问 T 对象的方式(在您的例子中,是 List<Currency>
。该值会在您第一次访问它时自动初始化(这就是它变得懒惰的原因)。您可以t 分配给值,但您可以遍历 currencyOfMids
并将每个值添加到 obj.Merchant.CurrencyOfMids.Value
.
foreach (ListItem currencyItem in selectedCurrencies)
currencyOfMids.Value.Add(new Currency() { Code = currencyItem.Text, Id = int.Parse(currencyItem.Value) });
您可以分配给 Lazy<T>
,将代码传递给它,以便在需要时延迟创建列表:
obj.Merchant.currencyOfMids = new Lazy<List<Currency>>(
() => ... code to generate currencies ...
);
现在,当您需要列表时,您可以访问 currencyofMids.Value
,如果尚未生成,它将生成它。