/// <summary>调用委托</summary> /// <param name="e"></param> public void Invoke(TArgs e) { //if (!Target.IsAlive) return; // Keep in mind that,不要用上面的写法,因为判断可能通过,但是接着就被GC回收了,如果判断Target,则会增加引用 Object target = null; if (Target == null) { if (Method.Method.IsStatic) { Method.Invoke(null, new Object[] { e }); } } else { target = Target.Target; if (target != null) { Method.Invoke(target, new Object[] { e }); } } // 调用方已被回收,或者该事件只使用一次,则取消注册 if ((Target != null && target == null || Once) && UnHandler != null) { UnHandler(Handler); UnHandler = null; } }
protected override void CreateDatabase() { //base.CreateDatabase(); if (String.IsNullOrEmpty(FileName) || File.Exists(FileName)) { return; } //The miminum you must specify: //Hashtable parameters = new Hashtable(); //parameters.Add("User", "SYSDBA"); //parameters.Add("Password", "masterkey"); //parameters.Add("Database", @"c:\database.fdb"); //FbConnection.CreateDatabase(parameters); DAL.WriteDebugLog("创建数据库:{0}", FileName); DbConnection conn = Database.Factory.CreateConnection(); MethodInfoX method = MethodInfoX.Create(conn.GetType(), "CreateDatabase", new Type[] { typeof(String) }); if (method == null) { return; } method.Invoke(null, Database.ConnectionString); }
public void Shrink() { MethodInfoX.Invoke <Object>(Engine, "Shrink"); }
public void CreateDatabase() { MethodInfoX.Invoke <Object>(Engine, "CreateDatabase"); }