我将用一个例子来详细说明,这样您就可以了解我的设置了,从
Tuples
.
C位:
[Cmdlet(VerbsCommon.Get, "FooValues")]
public class GetFooValues : PSCmdlet
{
private IEnumerable<Tuple<string, string, string>> relatedColumns;
[Parameter(Position = 0)]
public IEnumerable<Tuple<string, string, string>> RelatedColumns
{
get { return relatedColumns; }
set { relatedColumns = value; }
}
protected override void ProcessRecord()
{
var retval = Helper.GetValues(relatedColumns);
WriteObject(retval, false)
}
}
在哪里?
Helper
MyDll
:
static class Helper
{
List<List<string>> GetValues(IEnumerable<Tuple<string, string, string> cols)
{
using (var x = new MyDll.Foo())
{
foreach (var c in cols)
{
x.DoSomething(c.Item1, c.Item2, c.Item3)
}
return x.GetSomething();
}
}
}
这可以工作,我可以创造
多元组
把它们传给
Get-FooValues
Tuple
很重要,所以我想改为使用自定义类型并使用适当的属性值传递给
假设
RelatedColumn
类型:
class RelatedColumn
{
public string Connection { get; set; }
public string ToCategory { get; set; }
public string Name { get; set; }
}
private IEnumerable<RelatedColumn> relatedColumns;
[Parameter(Position = 0)]
public IEnumerable<RelatedColumn> RelatedColumns
{
get { return relatedColumns; }
set { relatedColumns = value; }
}
这就是我开始有问题的地方。我如何让Powershell意识到
是否需要?我怎么知道它是什么样子的呢?我需要在Powershell中重新创建类型it吗?