【发布时间】:2021-05-10 06:53:40
【问题描述】:
我怎样才能将这两种方法结合起来并放在一个...
class DataRulesPSScripts
{
PowerShell ps = PowerShell.Create();
public IEnumerable<object> RunScriptBlock( ScriptBlock scriptBlock, Dictionary<string, object> scriptParameters )
{
var vars = scriptParameters.Select( p => new PSVariable( p.Key, p.Value ) ).ToList();
return scriptBlock.InvokeWithContext( null, vars );
}
public async Task<ScriptBlock> CreateScriptBlock( string pSScript )
{
ps.AddScript( pSScript );
var scriptBlock = (await ps.InvokeAsync())[0].BaseObject as ScriptBlock;
return scriptBlock;
}
}
这两个方法在不同的类中以不同的方法调用,就像这样。 'ds' 是 DataRulesPSScripts 类的对象
private async Task<IEnumerable<object>> GenerateValuesFromScript( Dictionary<string, EntityProperty> arg, string pwScript )
{
var pars = new Dictionary<string, object>();
pars.Add( "_", arg );
var scriptBlock = await ds.CreateScriptBlock( pwScript );
var results = ds.RunScriptBlock( scriptBlock, pars ).ToList();
return results;
}
【问题讨论】:
-
试图弄清楚我该如何优化这个......并且有一种方法而不是两种方法
-
如果我这样做了,那么我在调用它的那一行就会出错,即 var results = ds.RunScriptBlock( pwScript, pars ).ToList();并且错误是 task
不包含 .ToList() 的定义
标签: c# methods async-await refactoring synchronous