XAML有可能爲類型聲明別名嗎?是否可以在XAML中聲明一個類型別名?
讓我來舉個例子來解釋。考慮到這些類型的聲明...
namespace Somewhere
{
public class Blob { … }
public class BlobCollection : List<Blob> {} // "type alias" in C#
}
...以下(略)XAML應該是有效的:
<BlobCollection xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="clr-namespace:Somewhere;…">
<Blob … />
<Blob … />
</BlobCollection>
我已經知道我可以定義通過繼承類似類型別名(見代碼以上評論)。假設想在XAML中做同樣的事情,我將如何更改XAML以便能夠參考BlobCollection
作爲Blobs
?
<Blobs xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns="clr-namespace:Somewhere;…">
<Blob … />
<Blob … />
</Blobs>
將'BlobCollection'別名到'Blobs'聽起來好像是一個壞主意。它違背了標準的命名約定。多個Blob對於屬性或字段名稱有意義,但對於類型名稱不適用。你的代碼的讀者將不得不讀取別名行來理解正在發生的事情。在編程中,減少字符數以節省擊鍵是一種假經濟,除非您非常小心地對可讀性產生零影響。 –
@Merlyn:我知道這一點。讓我們簡單考慮一個SQL數據庫,其中有一個「Blob」記錄表:即使您設置了將表映射到C#BlobCollection表的「ORM」,您也可能會調用表Blob。那麼爲什麼不應該用X(A)ML來完成呢? - .NET的標準命名準則並不一定適用於任何地方。 – stakx
我很欣賞你對我的假設的挑戰。我還沒有看到任何關於XAML中的命名約定的文章,專門介紹這種情況。但是,XAML仍然是.Net代碼 - 它只是一個用XML語言指定的對象樹/初始化塊。 'Blobs'是一個在你的數據層中有意義的抽象。我不會將該命名一直傳播到UI層,因爲我們在使用ORM時會改變命名的原因。 –