c# - C# 中的泼溅

标签 c# powershell dictionary parameter-splatting

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

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

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

最佳答案

如果您想在字典中支持多种类型值,类似于 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 中使用 $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
};

并传递给您的构造函数:

private MyClass _myObject;

public MyConstructor(MyClass myObject)
{
    _myObject = myObject;
}

关于c# - C# 中的泼溅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916419/

相关文章:

c# - 使用 pythonnet 从 .Net Core 调用 python 脚本

c# - 字符串清理和格式化

c# - 将字符串数据库值与两个以上的词进行比较

c# - 在 Entity Framework 中合并

powershell - Cmdkey 密码为空

powershell - 从数组中复制文件列表

windows - 如何在无人值守的情况下安装 Visual Studio Build Tools?

python - Python 字典中的平均值

python - 使用多个键之一过滤字典

python - 拆分字符串并生成键值对