110,535
社区成员
发帖
与我相关
我的任务
分享
public class SqlHelper
{
private OleDbConnection cn;
public SqlHelper()
{
cn = new OleDbConnection(ConfigurationManager.ConnectionStrings["OleDbConnectionString"].ConnectionString);
cn.Open();
}
public void Close()
{
cn.Close();
}
}
Assembly assembly = Assembly.LoadFrom(@"f:\SqlHelper.dll");
Type type = assembly.GetType("SqlHelper");
object obj = assembly.CreateInstance(type.FullName);
type.GetConstructor(Type.EmptyTypes).Invoke(obj, null);
type.GetMethod("Close").Invoke(obj, null);
Assembly assembly = Assembly.LoadFrom(@"f:\SqlHelper.dll");
Type type = assembly.GetType("SqlHelper");
object obj = assembly.CreateInstance(type.FullName);
type.GetConstructor(Type.EmptyTypes).Invoke(obj, null);
type.GetMethod("Close").Invoke(obj, null);
第一:
object obj = assembly.CreateInstance(type.FullName);
已经执行一次 Open
第二:
type.GetConstructor(Type.EmptyTypes).Invoke(obj, null);
执行第二次 Open
通俗的说。你只需要改成一下代码:
Assembly assembly = Assembly.LoadFrom(@"f:\SqlHelper.dll");
Type type = assembly.GetType("SqlHelper");
object obj = assembly.CreateInstance(type.FullName);
//type.GetConstructor(Type.EmptyTypes).Invoke(obj, null);
type.GetMethod("Close").Invoke(obj, null);