/* |-------------------------------------------------------------------------------| | Copyright © Computer Ease Limited | | Address: 1/9 Bloack-A Lalmatia, Dhaka-1207, Bangladesh | | Email: info@celimited.com, cease@bol-online.com, web: www.celimited.com | | Unauthorized copy or distribution is strictly prohibited | | Author: S. M. Russel, Last modified date: 23/07/2012 | |-------------------------------------------------------------------------------| */ using System; using System.Reflection; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; namespace Ease.Core.Utility { //public sealed class LateBoundObject : IDisposable //{ // private Type _t; // private object _o; // private Context _ctx; // #region Context // private class Context // { // private List _objects = new List(); // public void AddObject(LateBoundObject o) // { // _objects.Add(o); // } // public void Release() // { // foreach (LateBoundObject lbo in _objects) // { // if (lbo != null && lbo._o != null && Marshal.IsComObject(lbo._o)) // { // try // { // Marshal.ReleaseComObject(lbo._o); // } // catch { } // } // } // } // } // #endregion // public static bool IsValidProgID(string progID) // { // Type t = Type.GetTypeFromProgID(progID); // return t != null; // } // private LateBoundObject(Context ctx, object o) // { // _ctx = ctx; // _ctx.AddObject(this); // _o = o; // if (_o != null) // _t = _o.GetType(); // } // public LateBoundObject(string progID) // { // _ctx = new Context(); // _ctx.AddObject(this); // _t = Type.GetTypeFromProgID(progID); // if (_t == null) // throw new ArgumentException("Invalid ProgID " + progID, "progID"); // try // { // _o = _t.InvokeMember("", BindingFlags.CreateInstance, null, null, null); // } // catch (TargetInvocationException e) // { // if (e.InnerException != null) // throw e.InnerException; // else // throw; // } // } // public object Value // { // get { return _o; } // } // public LateBoundObject GetProperty(string name) // { // try // { // return new LateBoundObject(_ctx, _t.InvokeMember(name, BindingFlags.GetProperty, null, _o, null)); // } // catch (TargetInvocationException e) // { // if (e.InnerException != null) // throw e.InnerException; // else // throw; // } // } // public LateBoundObject GetProperty(string name, params object[] args) // { // try // { // return new LateBoundObject(_ctx, _t.InvokeMember(name, BindingFlags.GetProperty, null, _o, args)); // } // catch (TargetInvocationException e) // { // if (e.InnerException != null) // throw e.InnerException; // else // throw; // } // } // public void SetProperty(string name, object val) // { // try // { // _t.InvokeMember(name, BindingFlags.SetProperty, null, _o, new object[] { val }); // } // catch (TargetInvocationException e) // { // if (e.InnerException != null) // throw e.InnerException; // else // throw; // } // } // public void SetProperty(string name, object val, params object[] args) // { // try // { // object[] args1 = new object[args.Length + 1]; // args.CopyTo(args1, 0); // args1[args1.Length - 1] = val; // _t.InvokeMember(name, BindingFlags.SetProperty, null, _o, args1); // } // catch (TargetInvocationException e) // { // if (e.InnerException != null) // throw e.InnerException; // else // throw; // } // } // public LateBoundObject ExecuteMethod(string name, params object[] args) // { // try // { // return new LateBoundObject(_ctx, _t.InvokeMember(name, BindingFlags.InvokeMethod, null, _o, args)); // } // catch (TargetInvocationException e) // { // if (e.InnerException != null) // throw e.InnerException; // else // throw; // } // } // public void Dispose() // { // _ctx.Release(); // } //} }