6

在 PowerShell 中,您可以创建一个哈希表并使用 PowerShell 将此哈希表添加到您的函数@中。

$dict = @{param1 = 'test'; param2 = 12}
Get-Info @dict

可以将字典作为参数集合传递给构造函数或方法吗?

4

1 回答 1

3

如果您想在字典中支持多个类型值,类似于您的 PowerShell 哈希表,您可以在Dictionary<string, object>此处创建:

var dict1 = new Dictionary<string, object>
{
    {"param1", "test"},
    {"param2", 12},
}

然后可以将其传递给构造函数:

private Dictionary<string, object> _dict;

public MyConstructor(Dictionary<string, object> dict)
{
    _dict = dict
}

object类型只是System.Object.NET 中定义的类,所有类型都从该类继承。您可以使用 PowerShell 在 PowerShell 中进行检查$dict.GetType().BaseType.FullName,这将为您提供System.Object.

但是,object如上所示使用是危险的,因为它不提供类型安全性,并且需要您强制转换为object. 这也称为装箱和拆箱。如果可以的话,最好在这里使用强类型,或者重新考虑你的设计。

考虑到上述情况,我们可以在这里使用简单的类来代替强类型属性:

public class MyClass {
    public string Param1 { get; set; }
    public int Param2 { get; set; }
}

然后你可以像这样初始化它:

var myObject = new MyClass
{
    Param1 = "test1",
    Param2 = 12
};

并传递给您的构造函数:

private MyClass _myObject;

public MyConstructor(MyClass myObject)
{
    _myObject = myObject;
}
于 2020-03-29T15:39:21.287 回答