Example #1
0
        static void Main(string[] args)
        {
            // convert Library1.Server to Library2.Interface
            var server = ComWrapper.Create <Library2.Interface>(() => new Library1.Server());
            var client = new Library2.Client();

            client.CallMethod(server);

            Marshal.ReleaseComObject(server);
            Console.ReadLine();
        }
Example #2
0
        public static T Create <T>(Func <object> createInnerObject)
        {
            var wrapper = new ComWrapper();
            var unk     = wrapper.Initialize(createInnerObject);

            Marshal.AddRef(unk);
            try
            {
                var comObject = Marshal.GetObjectForIUnknown(unk);
                return((T)comObject);
            }
            finally
            {
                Marshal.Release(unk);
            }
        }