DoStuffOnlyOnceAsync我必須嘗試調(diào)用 using的非靜態(tài)方法AsyncLazy,但出現(xiàn)錯誤。如何調(diào)用非靜態(tài)方法?字段初始值設(shè)定項不能引用非靜態(tài)字段、方法或?qū)傩浴癟estClass.DoStuffOnlyOnceAsync()” using System; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Registry{public class AsyncLazy<T> : Lazy<Task<T>>{ public AsyncLazy(Func<T> valueFactory) : base(() => Task.Run(valueFactory)) { } public AsyncLazy(Func<Task<T>> taskFactory) : base(() => Task.Run(() => taskFactory())) { } public TaskAwaiter<T> GetAwaiter() { return Value.GetAwaiter(); }}public class TestClass{ private AsyncLazy<bool> asyncLazy = new AsyncLazy<bool>(async () => { await DoStuffOnlyOnceAsync(); return true; }); public TestClass() { } public async Task DoStuffOnlyOnceAsync() { await Task.FromResult(false); }}}
1 回答

SMILET
TA貢獻1796條經(jīng)驗 獲得超4個贊
限制是字段初始值設(shè)定項不能調(diào)用任何非靜態(tài)方法。AsyncLazy<T>對于任何字段初始值設(shè)定項都是如此,與or無關(guān)async。
要修復它,請在構(gòu)造函數(shù)中初始化該字段:
public TestClass()
{
asyncLazy = new AsyncLazy<bool>(async () =>
{
await DoStuffOnlyOnceAsync();
return true;
});
}
- 1 回答
- 0 關(guān)注
- 120 瀏覽
添加回答
舉報
0/150
提交
取消