C# 反射:使用字符串类名实例化对象

2023-11-24

我的情况如下:我正在使用 Visual C# 2010 Express 开发 Windows 窗体应用程序。当用户登录时,动态地构建一个菜单条,其中包含从数据库表加载的选项。在该表中,我保存 ID、选项名称和表单名称。

所以,假设在我的项目中我有一个名为 Contabilidad 的表单,它有 Contabilidad.cs 这是主类,所以如果我想创建一个新表单并显示它,我会这样做:

Contabilidad frmConta = new Contabilidad();
frmConta.Show();

但在这种情况下,因为菜单选项存储在数据库中,所以在数据库中我只有字符串“Contabilidad”。因此,我想使用 C# 反射来创建 Contabilidad 或任何其他形式的实例,仅使用字符串格式的类名。

首先我尝试了这个:

Form frmConta= (Form)Activator.CreateInstance(null, "Contabilidad").Unwrap();

因为我在 StackOverflow 问题中读到,如果我使用 null,我指的是当前程序集(我的表单都在同一个项目中),但我收到以下消息:

Could not load type 'Contabilidad' from assembly 'AccountingSA, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.

类定义如下:

namespace AccountingSA {
public partial class Contabilidad : Form
{
    public Contabilidad()
    {
        InitializeComponent();
    } ...

我也尝试过这个:

Assembly assembly = Assembly.Load("AccountingSA");
Type t = assembly.GetType("Contabilidad");
Form frmConta = (Form)Activator.CreateInstance(t);

但我收到 ArgumentNullException 并显示以下消息:

Value cannot be null. Parameter name: type

因为 t 变量为空。

我做错了什么?提前致谢。


使用类型的完全限定名称:

Type t = assembly.GetType("AccountingSA.Contabilidad");

从文档中Assembly.GetType(string):

名称 类型:System.String 类型的全名。 [...] name 参数包括命名空间,但不包括程序集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 反射:使用字符串类名实例化对象 的相关文章

  • 用于代数简化和求解的 C# 库 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 网络上有很多代数求解器和简化器 例如 algebra com 上不错的代数求解器和简化器 然而 我正在
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 错误:表达式不产生值

    我尝试将以下 C 代码转换为 VB NET 但在编译代码时出现 表达式不产生值 错误 C Code return Fluently Configure Mappings m gt m FluentMappings AddFromAssemb
  • 使用 Newtonsoft 和 C# 反序列化嵌套 JSON

    我正在尝试解析来自 Rest API 的 Json 响应 我可以获得很好的响应并创建了一些类模型 我正在使用 Newtonsoft 的 Json Net 我的响应中不断收到空值 并且不确定我的模型设置是否正确或缺少某些内容 例如 我想要获取
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 在 C 中初始化变量

    我知道有时如果你不初始化int 如果打印整数 您将得到一个随机数 但将所有内容初始化为零似乎有点愚蠢 我问这个问题是因为我正在评论我的 C 项目 而且我对缩进非常直接 并且它可以完全编译 90 90 谢谢 Stackoverflow 但我想
  • 在 Visual Studio 2010 中从 Fortran 调用 C++ 函数

    我想从 Fortran 调用 C 函数 为此 我在 Visual Studio 2010 中创建了一个 FORTRAN 项目 之后 我将一个 Cpp 项目添加到该 FORTRAN 项目中 当我要构建程序时出现以下错误 Error 1 unr
  • 是否有实用的理由使用“if (0 == p)”而不是“if (!p)”?

    我倾向于使用逻辑非运算符来编写 if 语句 if p some code 我周围的一些人倾向于使用显式比较 因此代码如下所示 if FOO p some code 其中 FOO 是其中之一false FALSE 0 0 0 NULL etc
  • 标准化 UTF-8 到底是什么?

    The 重症监护室项目 http userguide icu project org transforms normalization 现在也有一个PHP库 http us php net manual en class normalize
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 具有交替类型的可变参数模板参数包

    我想知道是否可以使用参数包捕获交替参数模式 例如 template
  • C#:帮助理解 UML 类图中的 <>

    我目前正在做一个项目 我们必须从 UML 图编写代码 我了解 UML 类图的剖析 但我无法理解什么 lt
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • 动态添加 ASP.Net 控件

    我有一个存储过程 它根据数据库中存储的记录数返回多行 现在我想有一种方法来创建 div 带有包含该行值的控件的标记 如果从数据库返回 10 行 则 10 div 必须创建标签 我有下面的代码来从数据库中获取结果 但我不知道如何从这里继续 S
  • 使用 C# 读取 Soap 消息

  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler

随机推荐

  • 如何避免 jOOQ 中表别名周围的引号

    我有以下选择查询创建 final DSLContext create DSL using SQLDialect POSTGRES create select DSL field identifier DSL field name creat
  • 读取 .wav 文件的标记

    我想用markers在 wav 文件中 看来是支持的aifc模块与getmarkers http docs python org 2 library aifc html aifc aifc getmarkers 对于 aiff 文件 但不适
  • 为什么锁被捕获到局部变量

    在java JRE中我看到the code private final ReentrantLock lock public E poll final ReentrantLock lock this lock lock lock 为什么锁被捕
  • 当我在 OS X Mavericks 上运行 mvn 时,出现以下错误:无法运行程序“/bin/sh”:错误=2,没有这样的文件或目录

    我在 MacBook Pro 上运行 OS X Mavericks 我安装了maven 3 0 5 当我运行 mvn 时 收到以下错误消息 Error while executing process Cannot run program b
  • 如何以编程方式将 GPO 设置为未配置或禁用

    我正在寻找一种编程解决方案 其效果与在 GPOE 中设置 配置 Windows NTP 客户端 状态相同Administrative Templates gt System gt Windows Time Service gt Time P
  • 如何在c#.Net中创建透明面板

    我在 Windows 窗体上有一个面板 面板内有几个控件 我可以让面板完全透明吗 它应该给人一种控件直接放置在 Form 上的感觉 如果您转到 BackColor 属性 并将选择器更改为 Web 则第一个选择是 透明 至少在我的 VB ID
  • 播放音频文件的c程序

    你能给出一个用C语言播放音频文件的示例代码 以及需要哪些头文件吗 我对这个概念很陌生 我有兴趣学习这个 您可以使用 PortAudio 库 PortAudio 是一个免费 跨平台 开源的音频 I O 库 它可以让您用 C 编写简单的音频程序
  • addEventListener() 到不存在的元素?

    我已附上一个click元素上的事件侦听器 例如 document querySelector class name addEventListener click function 该元素可能会也可能不会从服务器端生成 因此 如果服务器生成该
  • git工作流程:每个人都有一个分支,还是每个人都有一个master?

    当多人使用 git 一起工作时 是不是更好 让每个人都在 master 中工作 并在彼此的 master 之间合并 或者 让每个人都在自己有头衔的分支机构工作 在我看来 在 1 的情况下 虽然每个主节点都充当一个分支 但每个人都应该以大多数
  • 在 Monodroid 应用程序中重用 Monotouch 代码

    我目前正在实现一个 Monotouch 应用程序 最终将移植到 Monodroid 该应用程序只是 OData Web 服务的客户端 没有什么太花哨或对性能至关重要的东西 挑战是重用尽可能多的代码 我知道 Monotouch 和 Monod
  • PTVS:如何在一个项目中从第二个项目引用或使用 Python 源代码

    在带有 PTVS 的 Visual Studio 中我有两个分开的Python 项目 其中包含一个名为lib py用作函数库 另一个是使用库中函数的 main 我正在使用一个importmain 中的语句引用库项目中的函数 但出现以下错误
  • 如果编辑器的宽度太小,是否有办法将工具栏按钮包装到 TinyMCE 的下一行?

    我在高级主题中使用 TinyMCE 今天我必须提前指定每个工具栏行中的按钮 theme advanced buttons1 theme advanced buttons2 和 theme advanced buttons3 如果编辑器的宽度
  • PHP 重定向不安全吗?

    嗯 我真的无法确定任何不安全因素 但想知道你是否可以 如果可以 如何修补 修复 代码如下 header Location http example com search POST term POST type 我重定向的网站也在他们这边进行
  • 在新的 Android Studio 3.1 上构建时出错

    我将 Android Studio 更新到 3 1 稳定版本 并在尝试构建项目时收到此错误 起初存在问题DataBinding 我修复了它们 然后我发现了这个问题 org gradle api GradleException Compila
  • 仅从 for 循环中打印一次消息

    我想查找列表元素中是否包含特定字符串 如果找到该字符串 我想打印出 找到字符串 否则 找不到字符串 但是 我想出的代码会多次打印 找不到字符串 我知道原因 但我不知道如何修复它并只打印其中一条消息一次 animals dog mouse c
  • Svg 多边形舍入

    我正在开发一个使用 svg 移动 旋转 缩放功能的应用程序 我正在 Laravel 中编写后端 前端使用 html css javascript 我在网上看到折线可能有某种三次贝塞尔曲线 现在我的问题是 多边形 svg 元素是否可能具有与折
  • Symfony2 路由全局 {_locale} 要求

    我在routing yml 中指定了每个路由中的参数 locale 要求 我认为这一定可以简化这种情况 路由 yml ProjectBaseBundle index pattern locale defaults controller Pr
  • opencv 中体积图像的 3D 图像处理

    我期待 Opencv 中 3D 图像处理的教程 我有 O Reilly 出版的书 这是一本关于 Opencv 中的 2D 图像处理的好书 谁能给我介绍一些 3D 图像处理的资源吗 本问题中的 3D 图像代表体数据 通常指 CT MRI 数据
  • node.js 只输出三个点[重复]

    这个问题在这里已经有答案了 我在 Windows 计算机上安装了 node js 并打开了命令提示符 当我尝试 Hello World 示例时 我得到的唯一输出是三个点 node hello js 我做错了什么吗 node hello js
  • C# 反射:使用字符串类名实例化对象

    我的情况如下 我正在使用 Visual C 2010 Express 开发 Windows 窗体应用程序 当用户登录时 动态地构建一个菜单条 其中包含从数据库表加载的选项 在该表中 我保存 ID 选项名称和表单名称 所以 假设在我的项目中我