2010-06-09 27 views
1

好友類只適用於數據註解或任何屬性?我一直試圖將ColumnAttribute附加到我的好友類中的一個字段,但它似乎沒有在原始類中處理。這兩個類通過MetadataType鏈接。Buddy類只適用於DataAnnotations嗎?

回答

0

我的答案不是DataAnnotations特定的,這是如何關聯類型描述符的全局答案。

創建描述類關係的TypeDescriptionProvider的子類(在某些情況下,您可以使用現有描述符(例如AssociatedMetadataTypeTypeDescriptionProvider)跳過此部分)。

然後使用TypeDescriptor.AddProviderTypeDescriptor.AddProviderTransparent動態附加它們的運行時間。

我的建議是有一個具有標記類型列表的服務,並通過它運行所有類型(按需提供,因此性能成本在應用程序運行時分佈),並且處理類型時,添加類型到列表中,下次這個類型請求時,你知道它在列表中。

0

好友類技術對DataAnnotations沒有任何特殊之處。但是,它只適用於您使用的反射代碼與MetadataType屬性有關的內容。所以,ASP.NET MVC是處理好友類概念的代碼庫的一個例子,而Linq-to-sql則沒有。因此,如果您想要使用好友類添加ColumnAttribute,那麼此時您遇到困難。但是,如果您確實需要很好看,Linq-to-SQL將會使用帶有映射的XML文檔,而不是使用屬性。您可以使用它來構建映射,作爲您可能使用好友類的實例的替代方案。

如果你需要得到真正,真正看中的,繼續前進,讓你的好友類,然後寫自己的好友級感知反射處理程序對你的LINQ的屬性來修飾類和構建從XML映射文件,爲您的DataContext需求。你可以在50行以下的代碼中做到這一點。