我一直在努力解决委托问题。我发送一个方法作为参数,它不会获取参数并返回泛型类型Result<T>
。
public Result<Content> GetContents()
{
var contents = new Result<List<TypeLibrary.Content>>();
contents.Object = context.GetContents();
if (contents.Object != null)
{
contents.Success = true;
}
else
{
contents.Success = false;
}
return contents;
}
public static Result<T> Invoker<T>(Func<Result<T>> genericFunctionName) where T : new()
{
Result<T> result;
try
{
//do staff
result = genericFunctionName();
}
catch (Exception)
{
throw;
}
return result;
}
模型是
public class Result<T> where T : new()
{
public bool Success { get; set; }
public string Message { get; set; }
public T Object { get; set; }
public Result()
{
Object = new T();
}
}
用法是
var result = InvokerHelper.Invoker(_content.GetContents());
但我得到
编译时方法
InvokerHelper.Invoker<T>
(System.Func<TypeLibrary.Base.Result<T>>
)的类型参数无法从用法中推断出来。尝试显式指定类型参数。
。
这有什么问题?
答案 0 :(得分:6)
删除方法名称后面的参数,以便提供方法组(可以将其评估为委托)。因为它正在调用该方法并提供该方法的结果,该结果与预期的委托不匹配。
var result = InvokerHelper.Invoker(_content.GetContents);