> 以下のような場合構造体にキャストできるものでしょうか?
無理ですね。
// その構造体が .NET の標準ライブラリの物である場合を除く。
XmlSerializer で無理矢理とかも考えられますが……。
実行ファイルと実行時にロードする DLL の両方から参照される、もう一つの DLL を作成します。
この DLL に、受け渡しする型を定義して下さい。
もっというと、この DLL に、実行時ロードするクラスの基底クラスまたはインターフェイスを定義するのが普通です。
// main.exe reference.dllを参照
Assembly assem = Assembly.Load("test");
Type type = assem.GetType("Test");
ITest test = (ITest)Activator.CreateInstance(type);
Data data = test.Do();
// reference.dll
public interface ITest {
Data Do();
}
public class Data {
public string Name { get { return this.name; } }
private string name;
public Data(string name) { this.name = name; }
}
// test.dll reference.dllを参照
public class Test : ITest {
public Data Do() {
return new Data("test");
}
}