あなたが求めていることが本当に可能だとは思いません。KeyValuePair<string, string>
回避策は次のとおりです。型のコピーであり、型との間で暗黙的に変換される kvp という型を含めます。
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(...)
。