c# - 从 MatchEvaluator 委托调用的方法中返回一个 out 参数值?
问题描述
我有现有的方法,每个方法都返回一个 String 类型。现在,我需要从一个方法返回附加值并将其传递给另一个。我发现一种方法是使用“out 参数”。
我要返回的值 (paramObject) 来自 MatchEvaluator 委托调用的方法。
var result = Regex.Replace(param1, pattern, new MatchEvaluator(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;
}
详细了解 .net 中的闭包
推荐阅读
- r - 为什么 R 中的 textreuse packge 使 LSH 存储桶比原始 minhashes 大得多?
- sap-business-one-di-api - SAP Business One 集成框架浏览器卡在“正在加载”
- java - 在 Eclipse 中导出 java 项目时如何清除旧类?
- java - Android 通过点击按钮事件保存联系人
- binary - 代表5位数据的单词?
- python - 使用 Dijkstra 最小化成本?
- ios - SwiftUI - 我可以与提取的子视图共享功能吗?
- python - 如何将 'google.cloud.documentai.v1beta2.types.document.Document' 转换为 JSON?
- c++ - C ++如何将从postgresql查询的数据分配给结构并快速存储在std::vector中
- python - 如何衡量一个值是否在一段时间内保持不变?