180 lines
5.4 KiB
C#
180 lines
5.4 KiB
C#
|
/*
|
|||
|
|-------------------------------------------------------------------------------|
|
|||
|
| 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<LateBoundObject> _objects = new List<LateBoundObject>();
|
|||
|
// 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();
|
|||
|
// }
|
|||
|
//}
|
|||
|
}
|