在C#中拆分

问题描述 投票:3回答:1

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

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

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

c# powershell dictionary parameter-splatting
1个回答
2
投票

如果您希望在字典中支持多个类型值,类似于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类型只是.NET中定义的System.Object类,所有类型都继承自该类。您可以在PowerShell中使用System.Object进行检查,这将为您提供$dict.GetType().BaseType.FullName

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

考虑到以上几点,我们可以在这里使用简单的类,而不使用具有强类型的属性:

Boxing and Unboxing

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

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

并传递给您的构造函数:

var myObject = new MyClass
{
    Param1 = "test1",
    Param2 = 12
};
© www.soinside.com 2019 - 2024. All rights reserved.