从构造函数创建委托

2023-11-24

使用反射,我尝试从无参数构造函数创建委托,如下所示:

Delegate del = GetMethodInfo( () => System.Activator.CreateInstance( type ) ).CreateDelegate( delType );

static MethodInfo GetMethodInfo( Expression<Func<object>> func )
{
    return ((MethodCallExpression)func.Body).Method;
}

但我得到这个例外: “无法绑定到目标方法,因为其签名或安全透明度与委托类型不兼容。”什么会起作用?

注意创建委托自 .NET 的先前版本以来,至少对于此配置文件已被移动。现在它在 MethodInfo 上。


正如 phoog 指出的那样,构造函数不会“返回”值;它会“返回”值。另外你可以通过以下方式获取有关它的信息ConstructorInfo并不是MethodInfo;这意味着您无法直接围绕它创建委托。您必须创建调用构造函数并返回值的代码。例如:

var ctor = type.GetConstructor(Type.EmptyTypes);
if (ctor == null) throw new MissingMethodException("There is no constructor without defined parameters for this object");
DynamicMethod dynamic = new DynamicMethod(string.Empty,
            type,
            Type.EmptyTypes,
            type);
ILGenerator il = dynamic.GetILGenerator();

il.DeclareLocal(type);
il.Emit(OpCodes.Newobj, ctor);
il.Emit(OpCodes.Stloc_0);
il.Emit(OpCodes.Ldloc_0);
il.Emit(OpCodes.Ret);

var func = (Func<object>)dynamic.CreateDelegate(typeof(Func<object>));

当然,如果你在编译时不知道类型那么你只能处理Object...

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

从构造函数创建委托 的相关文章

  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • 在 HKCR 中创建新密钥有效,但不起作用

    我有以下代码 它返回 成功 但使用两种不同的工具使用搜索字符串 3BDAAC43 E734 11D5 93AF 00105A990292 搜索注册表不会产生任何结果 RegistryKey RK Registry ClassesRoot C
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • C# 方法重载决策不选择具体的泛型覆盖

    这个完整的 C 程序说明了这个问题 public abstract class Executor
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • 如何使用 x64 运行 cl?

    我遇到了和这里同样的问题致命错误 C1034 windows h 未设置包含路径 https stackoverflow com questions 931652 fatal error c1034 windows h no include
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • C++:为什么 numeric_limits 对它不知道的类型起作用?

    我创建了自己的类型 没有任何比较器 也没有专门化std numeric limits 尽管如此 由于某种原因 std numeric limits
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh

随机推荐

  • 使用 SHFILEINFO 获取文件图标

    我一直在寻找一个 C 库 它可以获取给定路径的多种尺寸的图标 最后当我确切地得到我需要的类时 它有一个问题 此方法获取给定路径的图标 public static BitmapSource GetIcon string FileName bo
  • RESTful 多对多可能吗?

    如何为 REST 帖子表示复杂资源 你好 目前我有一个应用程序 当用户点击 保存 时 它会迭代所有表单元素并创建一个管理以下内容的质量对象 var params attributes1 form1 getValues attributes2
  • PHP get_headers() 报告的标头与 CURL 不同

    怎么可能get headers 可能会返回与通过 CURL 获取不同的结果吗 这是我的代码 header Content type text plain url http www foxbusiness com index html ech
  • 仅在 Firefox 中出现 JQuery AJAX 异常:“无法在层次结构中的指定点插入节点”(HierarchyRequestError)

    非常奇怪的问题 我有一个由两部分组成的下拉列表 其中选择一个州将添加第二个下拉列表 为您提供该州的 MSA 区域列表 这是通过使用向控制器发出 JQuery Get 请求来完成的 该控制器返回选择下拉列表中的区域列表 例如 jQuery f
  • Android 5.0 (Lollipop) 上的拆分操作栏

    有谁知道Android 5 0中是否删除了狭窄功能时的分割操作栏 看起来它对布局不再有任何影响 由于这个问题之前没有得到真正的回答 有谁知道Android 5 0中是否删除了狭窄功能时的分割操作栏 Yes it was 尽管该更改没有记录在
  • 我需要采取哪些步骤才能从类库转换为 WCF?

    我创建了一个项目作为类库 现在我需要将其制作成 WCF 我可以创建一个 WCF 项目 但我想避免所有与 TFS 相关的麻烦 我已经完成了 App config 并将 client wcfTestClient exe 行添加到命令行参数中 但
  • 使用 DOM 将 SVG 元素添加到现有 SVG

    我有一个类似于以下代码的 HTML 结构 div div
  • Magento 目录 URL 重写在处理过程中卡住

    正如标题所示 我的目录 URL 重写索引器卡在处理中 我已经尝试了一切 但找不到解决方案 有谁知道这个问题的可靠解决方法吗 我尝试截断 core url rewrite 表并删除锁 但它仍然处于处理状态 当通过管理运行它时 页面只是继续加载
  • PHP 修改文本文件中的单行

    我尝试并寻找解决方案 但找不到任何明确的解决方案 基本上 我有一个列出用户名和密码的 txt 文件 我希望能够更改某个用户的密码 users txt 文件的内容 user1 pass1 user2 pass2 user3 pass3 我尝试
  • Python 中的嵌套 for 循环

    我想做类似的事情 for a in 0 1 for b in 0 1 for c in 0 1 do something 但是 我可能有 15 个不同的变量 有没有更简单的方法 比如 for a b c in 0 1 do somethin
  • 如何在CKEditor中自动为img标签添加类或属性?

    我使用的是 CKEditor 版本 3 6 我想自动添加class newsleft 到通过所见即所得添加的任何图像标签 我看过一些提到 dataProcessor 的帖子 但不知道应该添加哪个文件或如何添加 有人可以告诉我在哪里放置以下代
  • 使用 Firebase Auth UI 时出现 Android API 31 FLAG_IMMUTABLE 错误

    我在 Firebase Auth UI 库期间在 API 31 设备中收到以下错误 仅电话号码凭据 Fatal Exception java lang IllegalArgumentException com sstech racemana
  • 下拉复选框输入闪亮

    Shiny 中是否可以有一个下拉列表 您可以在其中选择多个值 我知道selectInput有选项可以设置multiple T但我不喜欢所有选定的选项都在屏幕上可见 特别是因为我有超过 40 个选项 这同样适用checkboxGroupInp
  • QueryException SQLSTATE[HY000] [1045] 用户“homestead”@“localhost”的访问被拒绝(使用密码:YES)

    为什么会出现以下错误 QueryException SQLSTATE HY000 1045 用户访问被拒绝 homestead localhost 使用密码 YES My env文件如下 APP NAME Laravel APP ENV l
  • 什么控制 Ember 加载路线的显示位置?

    我本以为LoadingRoute将在中显示其模板 outlet 主 AppView 的 但似乎并非如此 是什么决定了它去往何处 这是一个JS Bin我的问题 加载消息没有出现在我期望的地方 事实上 它看起来是插入到带有 class 的标签的
  • Lisp 数据安全/验证

    目前这对我来说实际上只是一个概念性问题 在 Lisp 中 程序就是数据 数据就是程序 REPL 正是这样做的 读取然后评估 那么如何以一种安全的方式获取用户的输入呢 显然这是可能的 我的意思是 viaweb 现在 Yahoo Stores
  • PHP 中的 UTF-8 编码 xml

    我正在尝试使用 PHP 输出 XML 当我在 Firefox 中查看页面源时 一切似乎都很好 但是 页面本身无法正常显示 在 Firefox 中 当显示格式正确的 XML 时 它通常会在页面顶部显示以下内容 This XML file do
  • 有没有办法获取 Signalr hub 组中的连接数?

    这是我的问题 我想跟踪用户是否在线或离线并通知其他客户 我正在使用集线器并实现了 IConnected 和 IDisconnect 接口 我的想法是当集线器检测到连接或断开连接时向所有客户端发送通知 默认情况下 当用户刷新页面时 他将获得新
  • 如何向函数添加一次性点击事件?

    我想向函数添加一个单击事件侦听器 但只希望它发生一次 我怎么能这样做呢 如果可能的话 我也想远离 JQuery EDITED 由于我得到的答案完全满足了我的需求 我想我可以通过上下文使它更清楚一些 我正在编写一个绘制矩形的函数 首先单击按钮
  • 从构造函数创建委托

    使用反射 我尝试从无参数构造函数创建委托 如下所示 Delegate del GetMethodInfo gt System Activator CreateInstance type CreateDelegate delType stat