public TInterface CreateProxy(ITargetAppDomain targetDomain) { var marshaledType = typeof(TImplementation); var marshaledTypeName = marshaledType.FullName; var marshaledAssemblyName = marshaledType.Assembly.FullName; var crossDomainProxy = (TImplementation)targetDomain.CreateInstanceAndUnwrap( marshaledAssemblyName, marshaledTypeName); return(crossDomainProxy); }
public virtual void before_each() { autoSubstitute = new AutoSubstitute(); targetDomain = autoSubstitute.Resolve <ITargetAppDomain>(); appDomainFactory = autoSubstitute.Resolve <IAppDomainFactory>(); appDomainFactory.Create(somePath).Returns(targetDomain); proxyable = autoSubstitute.Resolve <IDummyProxyable>(); proxyableFactory = autoSubstitute.Resolve <IProxyableFactory <IDummyProxyable> >(); proxyableFactory.CreateProxy(targetDomain).Returns(proxyable); runner = new CrossDomainRunner <IDummyProxyable, float>(appDomainFactory, proxyableFactory); proxyable.PassInput(Arg.Any <float>()).Returns(callInfo => { float input = callInfo.Arg <float>(); return(input); }); }