- PR -

シリアライズとリフレクションを両方使いたいのですが…?

1
投稿者投稿内容
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2008-02-29 15:06
あぶぽんです。
よろしくお願いします。

Assembly.LoadFrom メソッドを使って、動的にDLLを読み込むプログラムを作っています。

SoapFormatterを使ったシリアライズを行なおうとしましたが、
以下のコードで例外が発生してしまいます。

コード:
IPlugin plugin = null;

System.Reflection.Assembly asm = 
    System.Reflection.Assembly.LoadFrom(filename);

//plugin = (IPlugin)asm.CreateInstance(className);

SoapFormatter formatter = new SoapFormatter();

using (Stream stream = new FileStream(fileName, FileMode.Open))
{
    plugin = (IPlugin)formatter.Deserialize(stream);
}



| SerializationException
| (以下、実際には改行なし)
| 解析エラーです。Xml キー
| a1:http://schemas.microsoft.com/clr/nsassem/CommandPanel/
| CommandPanel%2C%20Version%3D1.0.0.0%2C%20Culture%3Dneutral%2C%20
| PublicKeyToken%3Dnull CommandPanel に関連付けられているアセンブリはありません。


コメントアウトしてありますが、
強引にCreateInstance()してみたりしましたが、結果は同じでした。

MSのサイトでも、LoadFromと逆シリアルを同時に使えないように書かれていますが、
何か解決策はないでしょうか?

http://msdn2.microsoft.com/ja-jp/library/1009fa28(VS.80).aspx
> LoadFrom を使用してアセンブリを読み込み、後から読み込みコンテキストのアセンブリが
> 表示名によって同じアセンブリを読み込もうとすると、読み込みが失敗します。これは、
> アセンブリが逆シリアル化されるときに発生します。
あぶぽん
大ベテラン
会議室デビュー日: 2005/10/20
投稿数: 205
投稿日時: 2008-02-29 15:13
すみません。
大事なことを書くのを忘れていました。

ISerializableインターフェイスを用いてシリアライズ制御していまして、
シリアライズには成功しています。

このサイトを参考に作りました。
http://www.atmarkit.co.jp/fdotnet/easyxml/easyxml14/easyxml14_01.html

よろしくお願いします。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2008-03-01 00:55
こんばんは。

すいません。何をされたいのかサッパリわかりません。
filenameって結局なんのファイルなんでしょう?
SOAP形式ファイル?アセンブリ?
1

スキルアップ/キャリアアップ(JOB@IT)