У меня есть существующие методы, каждый из которых возвращает тип 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;
}
}