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);
给出以下 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);