public void CanCreateNamedConcreteObjectByAskingForNamedInterface() { string config = @"<object-builder-config xmlns=""pag-object-builder""> <build-rules> <build-rule type=""" + FullNameSimpleObject + @""" name=""Foo"" mode=""Instance""> <constructor-params> <value-param type=""System.Int32"">12</value-param> </constructor-params> </build-rule> <build-rule name=""sm2"" type=""" + FullNameISimpleObject + @""" mode=""Instance""> <mapped-type type=""" + FullNameSimpleObject + @""" name=""Foo""/> </build-rule> <build-rule type=""" + FullNameISimpleObject + @""" mode=""Instance""> <mapped-type type=""" + FullNameSimpleObject + @"""/> </build-rule> </build-rules> </object-builder-config>" ; Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config)); Locator locator = CreateLocator(); ISimpleObject sm1 = builder.BuildUp <ISimpleObject>(locator, null, null); ISimpleObject sm2 = builder.BuildUp <ISimpleObject>(locator, "sm2", null); Assert.IsNotNull(sm1); Assert.IsNotNull(sm2); Assert.IsTrue(sm1 is SimpleObject); Assert.IsTrue(sm2 is SimpleObject); Assert.AreEqual(0, ((SimpleObject)sm1).IntParam); Assert.AreEqual(12, ((SimpleObject)sm2).IntParam); }
private static void QueryInterfacesUsingManifest(object obj) { Console.WriteLine(MethodBase.GetCurrentMethod().Name); Console.WriteLine("---------------------------"); IRegFreeComRotClass face = null; face = obj as IRegFreeComRotClass; if (face == null) { NRegFreeCom.ActivationContext.UsingManifestDo("RegFreeCom.OutOfProcClient.Win32.Dependencies.manifest", () => { face = obj as IRegFreeComRotClass; }); } if (face != null) { Console.WriteLine(typeof(IRegFreeComRotClass)); Console.WriteLine(face.Info); face.Ping(); face.Request("Hello from " + Process.GetCurrentProcess().ProcessName); try { ISimpleObject sf = face.Create(); Console.WriteLine(typeof(ISimpleObject) + " " + sf.Info + " " + sf.FloatProperty); } catch (Exception ex) { Console.WriteLine(ex); } } Console.WriteLine("---------------------------"); }
public static void AfterConstruction(ISimpleObject obj) { obj.CreateBy = SecuritySystem.CurrentUserName; obj.ModifyBy = obj.CreateBy; obj.CreateDate = DateTime.Now; obj.ModifyData = DateTime.Now; }
static void Main(string[] args) { var p = new Program(); var loader = new AssemblySystem(); var module = loader.LoadFrom(loader.GetAnyCpuPath(loader.BaseDirectory), "RegFreeComNativeConsumer.dll"); //call dll entry point if needed - //var main = module.GetDelegate<DEF.DllMain>();//enty point is not declared as export //bool result = main(module.Handle, FDW_REASONS.DLL_PROCESS_ATTACH, IntPtr.Zero); //if (!result) throw new Exception("Failed to init dll"); // push managed COM service into native method _service = new RegFreeSimpleObject(); _service.FloatProperty = 42; _pointer = Marshal.GetIUnknownForObject(_service); var initialize = module.GetDelegate <Initialize>(); int error = initialize(_pointer); if (error != 0) { throw new Exception(); } EnsureGC(); _service.RaiseEnsureGCIsNotObstacle(); // return string from C IntPtr strPtr = IntPtr.Zero; module.GetDelegate <GetStringResult>()(out strPtr); var str = Marshal.PtrToStringUni(strPtr); Marshal.FreeBSTR(strPtr); Console.WriteLine(str); // return array of COM services which return pointers var com = loader.LoadFrom(loader.GetAnyCpuPath(loader.BaseDirectory), "RegFreeComNativeImplementer"); var servicesGetter = com.GetDelegate <GetComInterface>(); object[] services; servicesGetter(out services); var srv = (RegFreeComNativeInterfacesLib.IMyService)services[0]; IntPtr otherHandle; srv.GetSomeHanlde(out otherHandle); var srvRepeat = (RegFreeComNativeInterfacesLib.IMyService)Marshal.GetObjectForIUnknown(otherHandle); // pointer to itself was used to simplify testing Assert.AreEqual(services[0], srvRepeat); Console.ReadKey(); }
public void CanCreateConcreteObjectByAskingForInterface() { Builder builder = new Builder(); builder.Policies.Set <ITypeMappingPolicy>(new TypeMappingPolicy(typeof(SimpleObject), null), typeof(ISimpleObject), null); Locator locator = CreateLocator(); ISimpleObject sm = builder.BuildUp <ISimpleObject>(locator, null, null); Assert.IsNotNull(sm); Assert.IsTrue(sm is SimpleObject); }
static void Main(string[] args) { var p = new Program(); var loader = new AssemblySystem(); var module = loader.LoadFrom(loader.GetAnyCpuPath(loader.BaseDirectory), "RegFreeComNativeConsumer.dll"); //call dll entry point if needed - //var main = module.GetDelegate<DEF.DllMain>();//enty point is not declared as export //bool result = main(module.Handle, FDW_REASONS.DLL_PROCESS_ATTACH, IntPtr.Zero); //if (!result) throw new Exception("Failed to init dll"); // push managed COM service into native method _service = new RegFreeSimpleObject(); _service.FloatProperty = 42; _pointer = Marshal.GetIUnknownForObject(_service); var initialize = module.GetDelegate<Initialize>(); int error = initialize(_pointer); if (error != 0) throw new Exception(); EnsureGC(); _service.RaiseEnsureGCIsNotObstacle(); // return string from C IntPtr strPtr = IntPtr.Zero; module.GetDelegate<GetStringResult>()(out strPtr); var str = Marshal.PtrToStringUni(strPtr); Marshal.FreeBSTR(strPtr); Console.WriteLine(str); // return array of COM services which return pointers var com = loader.LoadFrom(loader.GetAnyCpuPath(loader.BaseDirectory), "RegFreeComNativeImplementer"); var servicesGetter = com.GetDelegate<GetComInterface>(); object[] services; servicesGetter(out services); var srv = (RegFreeComNativeInterfacesLib.IMyService) services[0]; IntPtr otherHandle; srv.GetSomeHanlde(out otherHandle); var srvRepeat = (RegFreeComNativeInterfacesLib.IMyService)Marshal.GetObjectForIUnknown(otherHandle); // pointer to itself was used to simplify testing Assert.AreEqual(services[0],srvRepeat); Console.ReadKey(); }
public void CanCreateConcreteObjectByAskingForInterface() { string config = @"<object-builder-config xmlns=""pag-object-builder""> <build-rules> <build-rule type=""" + FullNameISimpleObject + @""" mode=""Instance""> <mapped-type type=""" + FullNameSimpleObject + @""" /> </build-rule> </build-rules> </object-builder-config>" ; Builder builder = new Builder(ObjectBuilderXmlConfig.FromXml(config)); Locator locator = CreateLocator(); ISimpleObject sm = builder.BuildUp <ISimpleObject>(locator, null, null); Assert.IsNotNull(sm); Assert.IsTrue(sm is SimpleObject); }
public void CanCreateNamedConcreteObjectByAskingForNamedInterface() { Builder builder = new Builder(); ConstructorPolicy policy = new ConstructorPolicy(new ValueParameter <int>(12)); builder.Policies.Set <ICreationPolicy>(policy, typeof(SimpleObject), "Foo"); builder.Policies.Set <ITypeMappingPolicy>(new TypeMappingPolicy(typeof(SimpleObject), null), typeof(ISimpleObject), null); builder.Policies.Set <ITypeMappingPolicy>(new TypeMappingPolicy(typeof(SimpleObject), "Foo"), typeof(ISimpleObject), "sm2"); Locator locator = CreateLocator(); ISimpleObject sm1 = builder.BuildUp <ISimpleObject>(locator, null, null); ISimpleObject sm2 = builder.BuildUp <ISimpleObject>(locator, "sm2", null); Assert.IsNotNull(sm1); Assert.IsNotNull(sm2); Assert.IsTrue(sm1 is SimpleObject); Assert.IsTrue(sm2 is SimpleObject); Assert.AreEqual(0, ((SimpleObject)sm1).IntParam); Assert.AreEqual(12, ((SimpleObject)sm2).IntParam); }
public AttributedConstructorMultipleImport(ISimpleObject[] simpleObjects) { Count = simpleObjects.Length; }
public MultipleConstructor(IBasicService basicService, ISimpleObject simpleObject) { BasicService = basicService; SimpleObject = simpleObject; }
public PickConstructorClass(ISimpleObject obj) { Which = 1; }
public ImportSingleSimpleObject(ISimpleObject simpleObject) { SimpleObject = simpleObject; }
public ShallowDependent (ISimpleObject simpleObject) { SimpleObject = simpleObject; }
public PickConstructorClass(ISimpleObject obj, ISimpleObject obj2) { Which = 2; }
public MultipleParameterObject (IShallowDependent shallowDependent, ISimpleObject simpleObject) { ShallowDependent = shallowDependent; SimpleObject = simpleObject; }
public FinalizableResource() { _obj = new SimpleObject(); }
public SecondaryObject(ISimpleObject simpleObject) { SimpleObject = simpleObject; }
public OptionalServiceConstructor(ISimpleObject simpleObject = null) { SimpleObject = simpleObject; }
public static void OnSaving(ISimpleObject obj) { obj.ModifyBy = SecuritySystem.CurrentUserName; obj.ModifyData = DateTime.Now; }
public void ImportMethod(ISimpleObject[] simpleObjects) { Count = simpleObjects.Length; }
public ImportKeyedE(ISimpleObject simpleObject) { SimpleObject = simpleObject; }
public AttributedClassMultipleImport(ISimpleObject[] simpleObjects) { SimpleObjects = simpleObjects; }
public OptionalIntServiceConstructor(ISimpleObject simpleObject, int value = DefaultIntValue) { Value = value; SimpleObject = simpleObject; }
public ImportArrayService(ISimpleObject[] simpleObjects) { Assert.NotNull(simpleObjects); Assert.Equal(5, simpleObjects.Length); }