C# 是否从MatchEvaluator委托调用的方法返回out参数值?

C# 是否从MatchEvaluator委托调用的方法返回out参数值?,c#,out,matchevaluator,C#,Out,Matchevaluator,我有一些现有的方法,每个方法都返回一个字符串类型。现在,我需要从一个方法返回附加值并将其传递给另一个方法。我发现一种方法是使用“out参数” 我要返回的值(paramObject)来自MatchEvaluator调用的方法 代表 var result=Regex.Replace(param1,pattern,newmatchevaluator(m=>MethodToMatch(m,param2,out SomeObject-paramObject)) 这可能吗?如果没有,有什么解决办法或其他方法

我有一些现有的方法,每个方法都返回一个字符串类型。现在,我需要从一个方法返回附加值并将其传递给另一个方法。我发现一种方法是使用“out参数”

我要返回的值(paramObject)来自MatchEvaluator调用的方法 代表

var result=Regex.Replace(param1,pattern,newmatchevaluator(m=>MethodToMatch(m,param2,out SomeObject-paramObject))

这可能吗?如果没有,有什么解决办法或其他方法来实现这一点

提前感谢您的帮助

public class TextCompiler
{
    public string Compile(string param1, string param2)
    {
        // some codes here ****

        var pattern = @"@\{.*?}+";

        var result = Regex.Replace(param1, pattern, new MatchEvaluator(m => MethodToMatch(m, param2, out SomeObject paramObject)));

        // OnActionCompleted(paramObject); //the variable raises an error "The name does not exist in the current context."                         

        return result;
    }


    protected string MethodToMatch(Match m, string param2, out SomeObject paramObject)
    {
        // Do something here ****

        var myClass = new MyClass();
        var cmd = "some strings";

        string pm = myClass.Execute(cmd, param2, out SomeObject pObj);

        paramObject = pObj;

        return pm;
    }
}


public class MyClass
{
    public string Execute(string cmd, string param2, out SomeObject paramObject)
    {

        // ** Do something here..

        var pObj = new SomeObject();

        // ** Insert some values to pObj..
        pObj = "some values here";

        var str = "Example Only";

        paramObject = pObj;

        return str;
    }
}

看起来,您选择了无效的体系结构。但是,你可以用黑客手段:

        public string Compile(string param1, string param2)
        {
            // some codes here ****

            var pattern = @"@\{.*?}+";

            var objects = new List<Class1>();
            var result = Regex.Replace(param1, pattern, m =>
            {
                var r = MethodToMatch(m, param2, out var paramObject);
                objects.Add(paramObject);
                return r;
            });

            OnActionCompleted(paramObjects);

            return result;
        }
公共字符串编译(字符串参数1,字符串参数2)
{
//这里有一些代码****
变量模式=@“@\{.*?}+”;
var objects=新列表();
var result=Regex.Replace(参数1,模式,m=>
{
var r=MethodToMatch(m,param2,out var paramObject);
添加(paramObject);
返回r;
});
OnActionCompleted(参数对象);
返回结果;
}

了解有关.net中闭包的更多信息

它很有效,谢谢!然而,我只是好奇什么是“有效的架构”?我仍然需要阅读有关“.Net中的闭包”的内容。我还在学习……)