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

Kin*_*sin 10 c# constructor dynamic implicit-conversion

鉴于以下内容class:

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

    public DataPair(string key, object value)
    {
        Key = key;
        Value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有机会实现类似的东西

public static implicit operator DataPair(dynamic value)
{
    return new DataPair(value.Key, value.Value);
}
Run Code Online (Sandbox Code Playgroud)

所以我可以用这种方式创建一个新实例

DataPair myInstance = {"key", "value"};
Run Code Online (Sandbox Code Playgroud)

小智 6

最后,使用 C# 7,您可以使用 ValueTuples,例如

public static implicit operator DataPair((string key, object value) value)
{
    return new DataPair(value.key, value.value);
}
Run Code Online (Sandbox Code Playgroud)

并像使用它一样

DataPair dp = ("key", 234);
Run Code Online (Sandbox Code Playgroud)


Rob*_*Rob 5

这可能是你最接近的:

public static implicit operator DataPair(string[] values)
{
    return new DataPair(values[0], values[1]);
}
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

DataPair myInstance = new []{"gr", "value"};
Run Code Online (Sandbox Code Playgroud)

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