我找到了一種解決方法,但本週早些時候在使用FluorineFx時遇到了麻煩,在那裏我有一個Linq-to-SQL生成的對象,我想通過電線將它發送到Flash 。這個對象包含在閃存並不需要一個屬性:氟TransientAttribute和Linq-to-SQL
[Association(Name="User_UserEntry", Storage="_UserEntries",
ThisKey="UserID", OtherKey="UserID")]
public EntitySet<UserEntry> UserEntries { ... }
但Flex的玩不轉reinflating這種類型,投擲:
ArgumentError: Error #2173: Unable to read object in stream. The class flex.messaging.io.ArrayCollection does not implement flash.utils.IExternalizable but is aliased to an externalizable class.
現在我並不需要該資源在發線,所以我嘗試的步驟是在Marc Gravell建議issue 456624,首先添加使用System.ComponentModel.DataAnnotations的MetadataTypeAttribute屬性它(從JasonW的評論發現issue 393687:
[MetadataType(typeof(UserMetadata)]
public partial class User { }
internal class UserMetadata
{
[FluorineFx.Transient]
public EntitySet<UserEntry> UserEntries { get; set; }
}
不幸的是,FluorineFx似乎還不支持元數據屬性(這並不令人驚訝,但它們是相當新的)。
我最終不得不做的是創建一個專用的DTO,它具有Flash關心的所有屬性以及它沒有的所有屬性。不是最優雅的解決方案。
那麼,有其他人遇到這個問題,你找到更多優雅的解決方法嗎?