使用 ConstructorInfo 调用构造函数的反射

2024-01-11

在如下所示的非常简单的课程中,

class Program 
{

    public Program(int a, int b, int c)
    {
        Console.WriteLine(a);
        Console.WriteLine(b);
        Console.WriteLine(c);
    }
 }

我使用反射来调用构造函数

像这样的东西...

   var constructorInfo = typeof(Program).GetConstructor(new[] { typeof(int), typeof(int),      typeof(int) });
        object[] lobject = new object[] { };
        int one = 1;
        int two = 2;
        int three = 3;
        lobject[0] = one;
        lobject[1] = two;
        lobject[2] = three;

        if (constructorInfo != null)
        {
            constructorInfo.Invoke(constructorInfo, lobject.ToArray);
        }

但我收到一条错误消息“对象与目标类型构造函数信息不匹配”。

非常感谢任何帮助/评论。 提前致谢。


你不需要通过constructorInfo作为参数,只要您调用构造函数,而不是对象的实例方法。

var constructorInfo = typeof(Program).GetConstructor(
                          new[] { typeof(int), typeof(int), typeof(int) });
if (constructorInfo != null)
{
    object[] lobject = new object[] { 1, 2, 3 };
    constructorInfo.Invoke(lobject);
}

For KeyValuePair<T,U>:

public Program(KeyValuePair<int, string> p)
{
    Console.WriteLine(string.Format("{0}:\t{1}", p.Key, p.Value));
}

static void Main(string[] args)
{
    var constructorInfo = typeof(Program).GetConstructor(
                             new[] { typeof(KeyValuePair<int, string>) });
    if (constructorInfo != null)
    {
        constructorInfo.Invoke(
            new object[] { 
                new KeyValuePair<int, string>(1, "value for key 1") });
    }

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

使用 ConstructorInfo 调用构造函数的反射 的相关文章

随机推荐

  • 与 Google 日历 API v3 进行未经授权的交互

    我的情况与this guy https stackoverflow com questions 10112939 login required 401 unauthorized message when calling the v3 goo
  • 获取 Firestore 子集合

    我在从以下位置获取数据时遇到问题火库具有以下结构 这是我获取类别集合的方法 var defaultStore Firestore var location DocumentSnapshot override func viewDidLoad
  • 空手道 - 有没有一种方法可以在字符串正则表达式中使用变量

    空手道 有没有一种方法可以在字符串正则表达式中使用变量 类似于下面的东西 match each productCodes regex i codes 任何替代方案或最佳实践将不胜感激 我试图从响应中获取一个字符串数组 以便每次进行匹配 一次
  • 在“VI”编辑器中对行进行排序

    如果我必须根据 左侧的值对以下行进行排序 但排序应同时将选择范围扩展到 之后的列 这就是我们不必在 之后对列进行排序 50599 1000000 50454 00000054 50080 00005464 50098 00000875 50
  • Ruby on Rails:根据数据库排序规则比较两个字符串

    我有一个单词列表 想查找数据库中已经存在的单词 我决定使用 SELECTword FROM table WHERE wordIN array of words 然后循环结果 问题是数据库排序规则 http www collat ion ch
  • f32 未实现减法?

    编译以下代码时 use std io fn main let reader stdin let nums reader lock lines next unwrap unwrap split whitespace map s s parse
  • CouchDB 全文搜索

    我需要一些有关 couchdb 中全文搜索的指导 它是否已经在 2 0 中默认启用 或者我们是否必须重建 couchdb 才能启用它 设想 它是一个文档管理系统 文档以网格形式显示 我需要能够对结果进行排序 经过从地图减少到弹性索引的几次更
  • Django 中没有 TEMPLATE_CONTEXT_PROCESSORS

    我没有TEMPLATE CONTEXT PROCESSORS在我的默认设置中 TEMPLATE CONTEXT PROCESSORS django contrib auth context processors auth django co
  • “不知道该怎么办”nvcc 致命错误

    我在 Ubuntu 终端中使用命令行 我正在尝试编译 CUDA Compiler Driver NVCC pdf 中提供的三个文件 当我使用这 3 个文件的文档给出的命令行时 我确实收到以下错误 nvcc fatal 不知道如何处理 dc
  • 如何知道站点查询字符串的所有可能参数是什么?

    我想检查任何现有网站网址的所有可能参数是什么 假设该站点正在使用参数类型查询字符串 architecture 例如不是 MVC 如下所示 http www foobar com p1 itemsPerPage 50 size 500 假设还
  • 实模式 BIOS 例程和保护模式

    我正在做一些操作系统实验 到目前为止 我的所有代码都利用实模式 BIOS 中断来操作硬盘和软盘 但是一旦我的代码启用了CPU的保护模式 所有实模式BIOS中断服务程序将不可用 如何读写硬盘和软盘 我现在需要做一些硬件驱动程序吗 我该如何开始
  • 按重叠范围对行进行分组

    我有一个数据框 其中left列是对象最左边的位置 并且right列是最右边的位置 如果对象重叠 或者它们重叠重叠的对象 递归地 我需要对它们进行分组 因此 例如 如果这是我的数据框 left right 0 0 4 1 5 8 2 10 1
  • 如何在postgres中获取该月的最后一天?

    如何在postgres中找到该月的最后一天 我有一个日期列 存储为数字 18 格式为 YYYYMMDD 我正在尝试使用它来使其约会 to date act dt YYYYMMDD AS act date 然后找到该日期的最后一天 像这样 s
  • phonegap 相机 API 在捕获图像的攻击时不会触发 SuccessCallBack 方法

    我正在使用 Phonegap API 来捕获图像 一旦我拍照并附加它 我的成功回调方法就不会被调用 这是我的实现方式 我已将 Phonegap jar 文件添加到库中 并将其添加到构建路径中 在我的主活动中 它扩展了我指定的 DroidGa
  • 让员工全力进出? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我的表如下 id time stamp evenid 1001 2017 09 05 09 35 00 1 in 1002 2017 09
  • AttributeError:使用与后端无关的 GUID 类型时,“UUID”对象没有属性“替换”

    我想使用 SQLAlchemy 1 1 5 在 Postgresql 数据库中拥有一个 uuid 类型的主键 id 并使用 pg8000 适配器连接到数据库 我用的是与后端无关的 GUID 类型 recipe http docs sqlal
  • 开始使用云计算

    我对云计算非常陌生 我想知道我可以在云上使用 LAMP 堆栈开发一个网站吗 以及使用哪种云 有没有开源云可以使用它 有点 您可以使用桉树 http open eucalyptus com downloads使用 LAMP 堆栈开发可在 Am
  • 无论有没有管道,如何在 k 折交叉验证后提取重要特征?

    我想构建一个使用交叉验证的分类器 然后从每个折叠中提取重要的特征 系数 以便我可以查看它们的稳定性 目前我正在使用 cross validate 和管道 我想使用管道 以便我可以在每个折叠内进行功能选择和标准化 我被困在如何从每个折叠中提取
  • 托管 COM 聚合

    据我了解 构建一个聚合现有 COM 对象的 COM 对象意味着在外部对象的 IUnknown QueryInterface 方法中实现重定向逻辑 我的问题是 如果您正在构建的对象是托管的 该怎么做 在托管对象上 IUnknown 没有显式实
  • 使用 ConstructorInfo 调用构造函数的反射

    在如下所示的非常简单的课程中 class Program public Program int a int b int c Console WriteLine a Console WriteLine b Console WriteLine