【问题标题】:C# methods with no body没有主体的 C# 方法
【发布时间】:2017-04-14 10:13:46
【问题描述】:

我是 C# 新手,并且在我将处理的代码库中遇到过类似的东西(这些具体示例来自 Microsoft.Extensions.CommandLineUtils)。

public CommandArgument Argument(string name, string description, Action<CommandArgument> configuration, bool multipleValues = false);
public CommandArgument Argument(string name, string description, bool multipleValues = false);

我真的只是想知道这个构造被称为什么以及调用这些函数时实际发生了什么?我猜它们是具有一些编译时间魔法的代理,但不确定。

【问题讨论】:

  • 请链接到完整的代码。公开使得它不是接口的一部分,而不是抽象使得它不可能没有实现
  • 您的问题不清楚。你发布的代码是不合法的C♯,实际上并没有出现在the source of Microsoft.Extensions.CommandLineUtils anywhere中。
  • 是的,@Lanorkin 已经回答了这个问题 - 实际查看外部 DLL 的元信息 感谢源链接

标签: c# methods


【解决方案1】:

这不是有效的 C# 代码。

您很可能在 VS.Net 中单击“转到定义”/F12,然后您会看到外部 DLL 的元数据。

【讨论】:

  • 这正是发生的事情。我想知道全班都在做什么,并收到了各种奇怪的东西。所以当你说外部 DLL 时——这是否意味着我无法窥探它是如何工作的?如果我想看看 Microsoft.Extensions.CommandLineUtils 是如何工作的,我无法查看源代码(可能是一个完全愚蠢的问题 - 但我来自 Go 和 Python,可以查看源代码)。
  • @opalfroot 不,你不能。如果有的话,您必须反编译 DLL 或对源的引用。 Resharper 插件(不是免费的)可以在 Visual Studio 中为您动态反编译。或者您可以将 dotPeek(免费)用于相同目的,但在 VS 之外
  • 对于其他人展示的一些操作系统的东西,我可以在 GitHub 上查看代码,但正如你所说的,对于其他所有东西,都有反编译工具等。再次感谢!
【解决方案2】:

我怀疑您正在查看的是 Visual Studio 从元数据创建的生成代码(您将在选项卡标题中看到“从元数据生成”)。这段代码实际上并没有编译 - 它只是向您展示方法签名的样子。

the actual code 可以看出,这些方法确实有主体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 2021-10-07
    相关资源
    最近更新 更多