2012-03-10 9 views
4

そうのようにシリアライズされますのDataContractを作成することが可能であるならば、私は好奇心:私は最終的にやろうとしています何単一のValueTypeベースの値でDataContractを作成できますか?

<MyCustomName>string value</MyCustomName> 

OR

<MyCustomName>int</MyCustomName> 

はカスタム要素の基本的な型を返すです名。私は、次のことを試してみた:

[DataContract(Name = "MyCustomName")] 
public class MyCustomName : String 
{ 
} 

しかし、明らかにあなたは、文字列またはint型の値を継承することはできません。どんな助けもありがとう。

答えて

2

簡単な方法があるかどうかはわかりませんが、私の知る限り、DataContractSerializerは、型がIXmlSerializableを実装している場合、それを尊重します。だから、このインタフェースを実装し、その後、あなただけのようなサロゲートプロパティを使用することができ、他のクラスにフィールドとしてその型を返却する場合MyCustomName

+0

そうかもしれませんが、私はJSONの自動シリアル化を利用しようとしており、IXmlSerializable Iその機能が失われます。これを行う簡単な方法があると思います。 – Devin

0

の独自のシリアライズをロールバックできますので、代わりに

public TreeId Id { get; set; } 

[DataMember(Name = "Id")] 
private string IdSurrogate 
{ 
    get 
    { 
     return Id.ToString(); 
    } 
    set 
    { 
     Id = new TreeId(value); 
    } 
} 

DataContractをTreeIdクラスに置く必要がある場合、プロパティIdSurrogateは文字列値に直接変換して処理します

関連する問題