2017-04-14 4 views
2

私はC#を初めて使い、作業するコードベースでこのようなことを学びました(これらの具体例はMicrosoft.Extensions.CommandLineUtilsです)。ボディのないC#メソッド

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

これらの関数を呼び出すときに、この構造体が呼び出され、実際に何が行われているかを知りたいだけですか?私は彼らがコンパイル時には魔法を使うプロキシだと推測していますが、わかりません。

+4

完全なコードにリンクしてください。一般公開されているため、それはインターフェイスの一部ではなく、抽象ではないため、実装が不可能になります –

+1

あなたの質問は不明です。あなたが投稿したコードは正式なC#ではなく、[Microsoft.Extensions.CommandLineUtils'のソース(https://github.com/aspnet/Common/blob/dev/shared/)に実際には表示されませんMicrosoft.Extensions.CommandLineUtils.Sources/CommandLine/CommandLineApplication.cs#L95-L114)。 –

+0

これは@Lanorkinによって回答されました - 実際に外部DLLのメタ情報を表示しています ソースリンクありがとう – opalfroot

答えて

5

有効なC#コードではありません。

ほとんどの場合、VS.Netの「Go to Definition」/ F12をクリックすると、外部DLLのメタデータが表示されました。

+0

これはまさに何が起こったかです。私はクラスが何をしているのか知りたかったので、あらゆる種類の奇妙なものが提示されました。 外部DLLと言うとき、これがどういう仕組みになっているのか見逃すことができますか? Microsoft.Extensions.CommandLineUtilsがどのように動作しているかを知りたい場合は、ソースを見ることができませんでした(完全にばかげた質問ですが、ソースを表示できるGoとPythonから来ています)。 – opalfroot

+1

@opalfrootできません。 DLLがある場合は逆コンパイルするか、ソースを参照する必要があります。 Resharperプラグイン(無料ではない)は、ビジュアルスタジオの中であなたのために即座に逆コンパイルすることができます。または、同じ目的のために同じ目的でdotPeek(無料)を使用することができますが、VS – Lanorkin

+0

の外にあるものOSの一部については、GitHubでコードを表示できますが、他のものについては逆コンパイルツールなどがあります。 もう一度おねがいします! – opalfroot

0

あなたが見ているのは、メタデータから作成したVisual Studioの生成コードです(このタブのタイトルには「メタデータから生成」があります)。このコードは実際にはコンパイルされません。メソッドのシグネチャの外観を表示するだけです。

the actual codeからわかるように、これらのメソッドにはボディがあります。

関連する問題