C# - 来自动态对象的隐式构造函数

C# -Implicit constructor from dynamic object

给出以下 class

public class DataPair{
    public string Key { get; set; }
    public object Value { get; set; }

    public DataPair(string key, object value)
    {
        Key = key;
        Value = value;
    }
}

有没有机会实现类似

的东西
public static implicit operator DataPair(dynamic value)
{
    return new DataPair(value.Key, value.Value);
}

所以我可以这样创建一个新实例

DataPair myInstance = {"key", "value"};

这可能是您最接近的:

public static implicit operator DataPair(string[] values)
{
    return new DataPair(values[0], values[1]);
}

并像这样使用它:

DataPair myInstance = new []{"gr", "value"};

这是最接近的,因为 = {"gr", "value"}; 语法是为数组保留的,您不能将其子类化。

最后,在 C# 7 中,您可以像这样使用 ValueTuples

public static implicit operator DataPair((string key, object value) value)
{
    return new DataPair(value.key, value.value);
}

并像

一样使用它
DataPair dp = ("key", 234);