C# 如何做';输出';在函数中<;T>;在c中#

C# 如何做';输出';在函数中<;T>;在c中#,c#,C#,我正在使用一个库来度量运行代码的指标。 图书馆的用途是这样的 _Library.Wrap("AnyStringForMetrics", Func<T>); 但是现在,如果我试图包装我的代码 public User GetOrCreate(long id, out bool newlyCreated) { // some random checks return _Library.Wrap( "UserGetOrCreat

我正在使用一个库来度量运行代码的指标。 图书馆的用途是这样的

_Library.Wrap("AnyStringForMetrics", Func<T>);
但是现在,如果我试图包装我的代码

public User GetOrCreate(long id, out bool newlyCreated) {
    // some random checks
    return _Library.Wrap(
        "UserGetOrCreate", () => UserDatabase.GetOrCreate(id, out newlyCreated));
}
在lambda表达式中使用“out”会得到一个异常。我应该如何解决这个问题

如果可能,请写出一个具体的代码示例。。。谢谢。

请改用a作为返回类型,从而避免使用
out
参数

public(用户用户,bool newlyCreated)GetOrCreate(长id){
变量用户=。。。。;
布尔创建=。。。。;
返回(用户,已创建);
}

并将其映射到
Func

使用a作为返回类型
public(User-User,bool-newlyCreated)GetOrCreate(long-id){var-User=…;bool-created=…;return(User,created);}
并将其映射到
Func
@OlivierJacot-Descombes您能给出答案吗?我想这可能行得通。我可以接受。nvm看起来他们认为这个问题是重复的,所以无法回答。我试过你的方法,效果很好。
public User GetOrCreate(long id, out bool newlyCreated) {
    // some random checks
    return _Library.Wrap(
        "UserGetOrCreate", () => UserDatabase.GetOrCreate(id, out newlyCreated));
}