c#.NET运行时对象类型
发布时间:2020-12-16 01:31:34 所属栏目:百科 来源:网络整理
导读:我需要创建一个对象的实例,该对象的类型将在运行时确定.从SQL中提取对象的类型并将其设置为字符串值.我还需要在实例化时传递一些参数.参数的数量/类型每次都相同(至少现在).我需要用什么来实现这一点,Activator.CreateInstance?任何帮助,将不胜感激. privat
我需要创建一个对象的实例,该对象的类型将在运行时确定.从SQL中提取对象的类型并将其设置为字符串值.我还需要在实例化时传递一些参数.参数的数量/类型每次都相同(至少现在).我需要用什么来实现这一点,Activator.CreateInstance?任何帮助,将不胜感激.
private void StartScans(int scan_typeid,SqlDataReader drActiveServers) { string sql = "SELECT scan_typeclass from scan_types WHERE scan_typeid = " + scan_typeid.ToString(); sqlconn.Open(); SqlCommand cmd = new SqlCommand(sql,sqlconn); SqlDataReader drScanClass = cmd.ExecuteReader(CommandBehavior.CloseConnection); string scan_class = drScanClass["scan_typeclass"].ToString(); //Create object here } 编辑: 理查德·伯格的解决方案在控制台应用程序中工作但不在上面的示例中,我已经转储了scan_class并验证了它获取值但是我一直收到此错误: System.ArgumentNullException:值不能为null. 这是我更新的代码: try { string sql = "SELECT scan_typeclass from scan_types WHERE scan_typeid = " + scan_typeid.ToString(); sqlconn3.Open(); SqlCommand cmd = new SqlCommand(sql,sqlconn3); SqlDataReader drScanClass = cmd.ExecuteReader(); drScanClass.Read(); string scan_class = drScanClass["scan_typeclass"].ToString(); var type = Type.GetType(scan_class); var myObj = Activator.CreateInstance(type,scan_id,scan_name,interval,drActiveServers); } catch (Exception e) { string sSource = "SharedAuditSVC"; string sLog = "Application"; string sEvent = e.ToString(); if (!EventLog.SourceExists(sSource)) EventLog.CreateEventSource(sSource,sLog); EventLog.WriteEntry(sSource,sEvent); EventLog.WriteEntry(sSource,sEvent,EventLogEntryType.Warning,0); } 嗯,我认为这与范围有关,虽然我没有成功通过这种方法调用我的自定义类.我会睡在它上面.. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |