可以在C#中定义一个别名,如此
using kvp = System.Collections.Generic.KeyValuePair<string, string>;
var pair = new kvp("key", "value");
Microsoft也定义了别名:
int i;
Int32 i2;
我们如何定义命名空间中可用的别名?这是可配置的吗?
这个问题具体是关于别名......所以......不希望使用继承作为代理。在很多情况下我很满意......但是当你想要最好的描述性名称和速记版本时,我都不满意。
答案 0 :(得分:5)
我不认为你所要求的是真的可能。这是一个解决方法:包含一个名为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的类型是一个未密封的类,你可以通过创建一个扩展它的类来做(非常接近)你想要的东西,所有基类的构造函数都被镜像并扩展{ {1}}。
答案 1 :(得分:4)
您明确要求别名而不是解决方法。因此,我唯一的答案是:没有办法做到这一点。
您提供的using
别名是每个文件。 C#没有允许跨文件别名的构造。