我有一个以Func<T, long>
为参数的方法。我想这样称呼这个方法:
Write(x => x.Id, "Some info");
该方法如下所示。我遇到的问题是在那个方法里面。我不知道如何执行该函数来获取long
值。
public void Write<TEntity>(Func<TEntity, long> func, string info)
{
var id = func(); // Doesn't work, func() needs an argument...
}
这是如何工作的?我该如何执行该功能?
答案 0 :(得分:2)
当然它不起作用,你需要n个参数。解决方案取决于你将要做什么。
1)您可以将TEntity作为参数:
public void Write<TEntity>(Func<TEntity, long> func, TEntity entity, string info)
{
var id = func(entity);
}
2)如果此函数在TEntity类中,您可以使用以下参数调用它:
class TEntity
{
public void Write<TEntity>(Func<TEntity, long> func, string info)
{
var id = func(this);
}
}
3)也许你不需要任何TEntity来获取Id,在这种情况下,将你的参数重写为没有参数的func:
public void Write<TEntity>(Func<long> func, string info)
{
var id = func();
}