|
分類:[C# (Windows)]
2007/06/16(Sat) 15:17:36 編集(投稿者)
プロジェクト1 DLL ///////////////////////////////////////// namespace PluginGraphicFilter { [Serializable] abstract public class AbstractPluginGrapchiFilter { abstract public int test(); } } ///////////////////////////////////////// プロジェクト2 DLL namespace PluginGraphicFilter { [Serializable] public class PluginGraphicFilter : AbstractPluginGrapchiFilter { public int a = 2; public override int test() { return a; } } } ///////////////////////////////////////// 上記二つのプロジェクトでDLLを作成します。
///////////////////////////////////////// namespace GraphicFilterTest { class Program { static void Main(string[] args) { //DLL読み込み Assembly a = Assembly.LoadFrom("BrightnessPluginFilter.dll"); Type t = a.GetType("PluginGraphicFilter.PluginGraphicFilter"); //インスタンス作成 PluginGraphicFilter.AbstractPluginGrapchiFilter o = Activator.CreateInstance(t) as PluginGraphicFilter.AbstractPluginGrapchiFilter; SoapFormatter formatter = new SoapFormatter(); string path = "c:\\abc.xml"; System.IO.File.Delete(path); Stream stream = new FileStream(path, FileMode.OpenOrCreate); //シリアライズ formatter.Serialize(stream, o);
//デシリアライズ Stream stream = new FileStream(path, FileMode.Open); PluginGraphicFilter.AbstractPluginGrapchiFilter oo = (PluginGraphicFilter.AbstractPluginGrapchiFilter)formatter.Deserialize(stream); } } } ///////////////////////////////////////// で、こんな感じでプラグインフィルターをシリアライズしてさらにデシリアライズでうまく動作したのですが、 ここで疑問があります。
一度シリアライズしたファイルを
SoapFormatter formatter = new SoapFormatter(); string path = "c:\\abc.xml"; Stream stream = new FileStream(path, FileMode.Open); PluginGraphicFilter.AbstractPluginGrapchiFilter oo = (PluginGraphicFilter.AbstractPluginGrapchiFilter)formatter.Deserialize(stream);
こんなかんじでBrightnessPluginFilter.dllを読み込まなくてもデシリアライズできるのですが、 いったい何時BrightnessPluginFilter.dllの本体をよみこんでやっているのでしょうか?
|