リフレクション2

方法がいくつかあってとまどう.

public class MainClass{
public void Main(){
Assembly asm = Assembly.LoadFrom("sample.dll");
Type sampleType = asm.GetType("Test.Sample.SampleClass");
if(sampleType != null){
SampleClass sampleInstance = (SampleClass)Activator.CreateInstance(sampleType);
sampleInstance.SayHallo();
}else{
throw new Exception(sampleClassName + "という名前のクラスは存在しません");
}
}
}

できました.Activatorを使う場合はCreateInstanceの引数はTypeクラス型なのですが,Assemblyも同じ名前のメソッドを持っていてそっちはString型だったりして,混乱してました.どうせ例外のキャッチは必要なので,わざわざGetTypeを使わずにAssembly#CreateInstance(string classname)を使ってしまうのも良いのかもしれません.試していないけれど.