我有一个如下所示的方法:
protected async Task<TModel> GetItemFromServerAsync(string id) { ... }
我想将此方法传递给另一个类并在那里执行它。 我尝试使用Func关键字,但调用以下方法时无法传递该方法:
public async Task<List<TModel>> Import(Func<string, Task<TModel>> getEntityFromDatabase)
如何在另一个类中调用GetItemFromServerAsync方法?
答案 0 :(得分:0)
async
本身不会更改界面,因此可以正常工作。这是一个示例:
void SendMyMethod()
{
MyMethod2(MyMethod);
}
async Task<string> MyMethod(int a)
{
return "5";
}
void MyMethod2(Func<int, Task<string>> func)
{
func(5);
}
因此还有其他不起作用的地方。也许您应该发布代码和所收到的错误。
答案 1 :(得分:0)
此问题与async
无关-我认为您的问题是Import
不知道TModel
是什么。
您尚未在任何地方指定TModel
,但我假设它是在包含GetItemFromServerAsync
的类中定义的
public class DataAccess<TModel>
{
public async Task<TModel> GetItemFromServerAsync(string id)
{
return default(TModel); // just to make it compile, I assume you do some data access here or something
}
}
然后在调用方,您需要指定TModel
作为方法的一部分(但是您不必显式命名它,它将被推断出来):
async Task<List<TModel>> Import<TModel>(Func<string, Task<TModel>> getEntityFromDatabase)
{
//...///
}
调用代码应遵循以下原则:
var da = new DataAccess<SomeType>();
var result = Import(da.GetItemFromServerAsync); // would be a list of "SomeType"