I've been trying to dynamically load an assembly to an AppDomain. I need to do it because I want to call a method dynamically, but don't keep the handle to the DLL while my app is running, so that it can be replaced, if needed. But I'm getting this SerializationException exception: Type is not resolved for member "..."
Here's my code:
AppDomain domain = AppDomain.CreateDomain("Temp AppDomain", null, AppDomain.CurrentDomain.SetupInformation);
try {
object obj = domain.CreateInstanceFromAndUnwrap(dllPath, typeName);
IMyInterface myObj = (IMyInterface) obj;
result = myObj.MyMethod(something);
}
finally {
AppDomain.Unload(domain);
}
Answer: The type had to extend MarshalByRefObject
.