2012-04-10 22 views
0

私は1つのwcfクライアントアプリケーションを開発しています。ここに私は7つの異なる要求があります。動的オブジェクト割り当てとアクセス権

以下のデモコードのようにする方法はありますか?以下のように

T obj =new anyobject ; 

obj=DeSeriableXMLToObject<typeof(obj)>(string); 

if(obj.property1=="200") 
{ 
} 

マイdeserialise機能は:

public static T DeSeriableXMLToObject<T>(string xml) 
    { 
// process for derisialising 
} 

は、私が思うに、我々はドットネットにダイナミックでこれを行うことができます。しかし、私はこのダイナミックなコンセプトに慣れていません。誰か助けてくれますか?プロパティを設定

var serializer = new XmlSerializer(typeof(T)); 
T obj = (T)serializer.Deserialize(new StringReader(value)); 

様々な方法で行うことができます。

答えて

0

私は以下のように私の問題を解決しました。

dynamic obj= new anyobject(); 

obj=DeSeriableXMLToObject(xml,obj); 

if(obj.property1==200) 
{ 
} 

このように私のデシリアライズ機能。

dynamic DeSeriableXMLToObject(string xml,dynamic obj1) { 
// 
Byte[] _bytes = (new UTF8Encoding()).GetBytes(xml); 

DataContractSerializer datacontractser = new DataContractSerializer(obj.GetType()); 

     object deserialized = _datacontractser .ReadObject(new MemoryStream(_bytes)); 

     return deserialized; 
} 
0

デシリアライゼーションのようなものがあることでしょう。

interface IFoo { 
    string property1 { get; } 
} 

と:

T DeSeriableXMLToObject<T>(string value) where T : IFoo { 
    var serializer = new XmlSerializer(typeof(T)); 
    T obj = (T)serializer.Deserialize(new StringReader(value));   
    if(obj.property1 == "200") { ...} 
    return obj; 
} 

別の反射又はdynamicある;ところで

T DeSeriableXMLToObject<T>(string value) { 
    var serializer = new XmlSerializer(typeof(T)); 
    dynamic obj = serializer.Deserialize(new StringReader(value));   
    if(obj.property1 == "200") { ...} 
    return obj; 
} 

好ましいのは、おそらくインターフェイスは、タイプ間のいくつかの共通点を有することですDeSeriableXMLToObject<T>ルックス...ちょっとファンキーな名前です。 Deserialize<T>またはDeserializeXml<T>をお勧めしますか?

+0

ダイナミックを使用して投稿できますか? –

+0

最後の例のように@Vetrivelmp? –

+0

T DeSeriableXMLToObject この関数では、実行時にTを知る方法は?たとえば、DeSeriableXMLToObject ()のように渡す必要があります。私はそれがclass1かclass1かどうかはわかりません。このように書くにはDeSeriableXMLToObject ()?あなたが私の要求を理解してくれることを願っ –

関連する問題