2012-01-31 11 views
0

オブジェクトを特定の方法で使用しているときに流暢な検証ルールを配置するために、プロパティを持たない子タイプを使用しています。シリアル化のベース/親タイプとして子タイプをキャスト

オブジェクトが私のシリアライザになったときにそう

public class User 
{ 
    public string name {get;set;} 
} 

public class myUser : User{} 

は、しかし、私はそれが基本型にそれをシリアライズしたいです。 「User」は「myUser」ではないルート要素です。

+1

わかりません。基本タイプからすべてのメンバーを継承するタイプは、どのように流暢な検証ルールを手助けしますか? – svick

+1

http://stackoverflow.com/questions/9068134/controller-input-validation-in-mvc-api/9068366#9068366 – Jules

+1

しかし、それは継承については何も言いません。実際、 'User'がすべてのプロパティを持つ型であれば、' myUser'は基本型のメンバを派生型で削除することができないので、この種の検証には役に立ちません。 'myUser'は' User'を使うだけでは実現できない目的は何ですか? – svick

答えて

1

シリアル化を行う前に単純にUserに戻すのはなぜですか?

いくつかは、XmlSerializerをの周り掘り行った後、これは私のためにそれをしない:

var myUser = new myUser(); 
myUser.Name = "Test name"; 
var serializer = new XmlSerializer(typeof(User), new Type[] {myUser.GetType()}); 
serializer.Serialize(Console.Out, myUser); 
ここで(この場合はユーザー)あなたはキャストしたい基本型と XmlSerializerを作成して行われているのは何

あなたが許可したいと思う他のタイプの配列だけでなく、これらの型は基本型から派生しなければならないようです。

出力:

<?xml version="1.0" encoding="ibm850"?> 
<User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org 2001/XMLSchema" xsi:type="myUser"> 
    <Name>Test name</Name> 
</User> 

xsi:type="myUser"、これはあなたの直列化復元プロセスの問題を引き起こすかどうかわかりません。

+1

私はこれを試しました。それは動作しません、インスタンスは、子のタイプのままです。 – Jules

+0

これは面白いです、私は間違った答えを与えることについてお詫び申し上げます。これに関する適切な答えを楽しみにしています。 –

+0

実際に動くかもしれないもので私の答えを更新しました。 :) –

関連する問題