動的に(codedomを使用して)作成された型の配列を取得するためにXMLをデシリアライズしようとしています。その後、リフレクトを使用してそのアセンブリをロードし、動的に作成されます。私は(この動的に生成された型のオブジェクトのコレクションを持っている)私のXMLをデシリアライズしようとすると、どのように型をシリアライザに提供するのかわかりません。動的型に逆シリアル化する方法
私のコードサンプルは:
Assembly assembly = Assembly.LoadFile("myDynamicassembly.dll");
Type type = assembly.GetType("myDynamicType");
string xmlstring = myXml.OuterXml.ToString();
byte[] buffer = ASCIIEncoding.UTF8.GetBytes(xmlstring);
MemoryStream ms = new MemoryStream(buffer);
XmlReader reader = new XmlTextReader(ms);
myDynamicType[] EQs;
XmlSerializer serializer = new XmlSerializer(typeof(myDynamicType[]));
EQs = (myDynamicType[])(serializer.Deserialize(reader));
ので、ここでの問題は、コードを書いている間、私は「myDynamicType」を知らないということです。実行時に作成され、コンパイルされます。
助けてください。
に変換し得
Type
を使用しますが、コンパイル時でのタイプを知っていますかでも、まったく不明なアセンブリを読み込んでいますか?どのようにこれらのオブジェクトを使用するつもりですか? –いいえ、コンパイル時に型がわかりません。実際には、生成され、実行時にアセンブリにコンパイルされます。つまり、私のアセンブリだけでなく、私の 'myDynamicType'も、コンパイル時に全く知られていないと言うことができます。さらなる使用については、この配列をWebサービスに渡して、このコレクションで何らかの操作を実行します。 – tavier