我不认为你所要求的真的是可能的。这是一种解决方法:包含一个名为 kvp 的类型,它是您的类型的副本KeyValuePair<string, string>
并隐式转换为您的类型。
public struct kvp
{
public string Key { get; private set; }
public string Value { get; private set; }
public kvp(string key, string value)
: this()
{
Key = key;
Value = value;
}
public override string ToString()
{
return ((KeyValuePair<string, string>)this).ToString();
}
public static implicit operator KeyValuePair<string, string>(kvp k)
{
return new KeyValuePair<string, string>(k.Key, k.Value);
}
public static implicit operator kvp(KeyValuePair<string, string> k)
{
return new kvp(k.Key, k.Value);
}
}
这具有您可以使用kvp
而不是 的KeyValuePair<string, string>
效果,在大多数情况下不会产生意外影响。
如果您希望 typedef 的类型是一个未密封的类,您可以通过创建一个扩展它的类来做(非常接近)您想要的事情,其中所有基类的构造函数都被镜像和扩展base(...)
。