using System; using System.Reflection; using System.Runtime.Remoting; class App { static void Main() { object obj = null; try { obj = UseAppDomain("lib, Version=1.0.0.0, " + "Culture=neutral, PublicKeyToken=3bf941bb1f722efe"); InvokeObject(obj); } catch(Exception e1) { Console.WriteLine(e1.GetType().ToString()); } try { obj = UseAppDomain("lib"); InvokeObject(obj); } catch(Exception e2) { Console.WriteLine(e2.GetType().ToString()); } } static object UseAppDomain(string name) { AppDomain ad = AppDomain.CurrentDomain; return ad.CreateInstanceAndUnwrap(name, "LibraryCode"); } static void InvokeObject(object obj) { Type type = obj.GetType(); MethodInfo mi = type.GetMethod("GetVersion"); string version = (string)mi.Invoke(obj, null); Console.WriteLine(version); } }