1 回答

TA貢獻(xiàn)1841條經(jīng)驗 獲得超3個贊
請參考如下代碼片段:
?public DynamicAssembly()
??????? {
??????????? PermissionSet perSet = new System.Security.PermissionSet(System.Security.Permissions.PermissionState.Unrestricted);
??????????? AppDomainSetup objSetup = new AppDomainSetup();
??????????? objSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
??????????? _objAppDomain = AppDomain.CreateDomain("MyAppDomain", null, objSetup, perSet, null);
??????? }
?
?public void InitCall()
??????? {
??????????? string strErrorMsg = string.Empty;
??????????? RemoteLoaderFactory factory = (RemoteLoaderFactory)_objAppDomain.CreateInstance("UIT.DynamicExpression.RemoteAccess", "UIT.DynamicExpression.RemoteAccess.RemoteLoaderFactory").Unwrap();
??????????? // with help of factory, create a real 'LiveClass' instance
??????????? _object = factory.Create("UIT.DynamicalExpressionBin.dll", "UIT.DynamicExpression.Eval", null);
??????????? if (_object == null)
??????????? {
??????????????? strErrorMsg = "Error: " + "Couldn't load class.";
??????????????? Trace.WriteLine(strErrorMsg);
??????????? }
??????? }
其中RemoteFactory類代碼如下:
?public class RemoteLoaderFactory : MarshalByRefObject
??? {
??????? private const BindingFlags bfi = BindingFlags.Instance | BindingFlags.Public | BindingFlags.CreateInstance;
??????? public RemoteLoaderFactory() { }
??????? public IRemoteInterface Create(string assemblyFile, string typeName, object[] constructArgs)
??????? {
??????????? return (IRemoteInterface)Activator.CreateInstanceFrom(
???????????????????? assemblyFile, typeName, false, bfi, null, constructArgs,
???????????????????? null, null, null).Unwrap();
??????? }
??? }
- 1 回答
- 0 關(guān)注
- 405 瀏覽
添加回答
舉報