[英]How to define a namespace-wide C# alias?
可以像這樣在C#中定義別名
using kvp = System.Collections.Generic.KeyValuePair<string, string>;
var pair = new kvp("key", "value");
Microsoft也定義了別名:
int i;
Int32 i2;
我們如何定義命名空間中可用的別名? 這是可配置的嗎?
這個問題具體是關於別名......所以......不希望使用繼承作為代理。 在很多情況下我很滿意......但是當你想要最好的描述性名稱和速記版本時,我都不滿意。
我不認為你所要求的是真的可能。 這是一個解決方法:包含一個名為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(...)
。
您明確要求別名而不是解決方法。 因此,我唯一的答案是:沒有辦法做到這一點。
您提供的using
別名是每個文件。 C#沒有允許跨文件別名的構造。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.