私が正しく覚えていれば、関数はCLR世界のクラスのメンバーでなければならず、C++/CLIではグローバル関数が可能です。これは、これらのグローバル関数が、ある種の隠れた「グローバル」クラスの一部であることを意味しますか?もしそうなら、反射目的のために、その型をどうやって得るのでしょうか?C++/CLIどのようなクラスがグローバル関数を囲んでいますか?
答えて
はい、.NETメタデータはグローバル関数と変数をサポートしています。 CLRソースコードでは「グローバルクラス」と呼ばれ、その名前は<Module>
です。 C#vernacularを使用すると、クラスのインスタンスを決して作成できないように、internal
,abstract
およびsealed
になります。アングルブラケットは誤って重複するタイプの作成を防ぎます。
技術的には、BindingFlags.NonPublicとBindingFlags.Staticが必要です。それがどれほど実用的でないかを覚えておいてください。何かを見つけるために、mangled C++の名前を使用する必要があります。少なくともリンカの.mapファイルまたはildasm.exeのような逆アセンブラが必要です。それは非常に乱雑であることに注意してください、CRT識別子の多くは、典型的なC + +/CLIプロジェクトのためにこのクラスに終わります。バグのビット。
最後に、ほとんどの場合、コードは<Module>
にあるのが間違いです。わかりにくいreverse-pinvokeの理由を除いて、常にマネージコードをrefクラスの中に入れてください。特にあなたはそれを反映したい場合。さらに気になるところでは、MSILにコンパイルされたネイティブのC++コードがあまりにも多くなってしまいます。これはうまくいくので、C++ 03に準拠したコードはMSILにコンパイルできるので、基本的にどちらの世界でも最悪の状態になっているとは言えません。 C++/CLIをネイティブのC++コードから厳密に分離することは重要です。スタティックライブラリプロジェクトを使用するのが最も簡単です。
実際には "<モジュール>"(角かっこ付き)という名前のクラスは、名前空間にはありません。このクラスは実際には通常のC#アセンブリに存在します。
- 1. Javaではどのようなグローバル変数が悪い習慣ですか?
- 2. クラスのプライベートmap()関数は失敗しますが、グローバル関数は成功します - なぜですか?
- 3. アクションを伴う関数を囲んでいます
- 4. PhalconPHP - グローバル関数とクラス
- 5. グローバル私はこのようなグローバル関数を登録している
- 6. JavaScriptでグローバル変数と関数を使用しないようにする
- 7. グローバル変数と同じ関数内の変数名です。どんな問題?この良いスタイルですか?
- 8. クラスはPythonでグローバルではないようです
- 9. グローバル変数をどのように増やすことができますか?
- 10. 関数からグローバル変数を宣言しようとしています
- 11. グローバル変数なしでこれをどのように記述しますか?
- 12. jinjaコンテキスト関数で(グローバル以外の)変数を設定するにはどうすればよいですか?
- 13. Ember qUnitでどのようにクラス関数をテストできますか?
- 14. 関数がグローバル変数を認識できません
- 15. なぜDirectorクラスは、グローバル変数をコロナの外部モジュールから見えないようにしますか?
- 16. 関数内のグローバル変数の値を変更するにはどうすればよいですか?
- 17. AS3グローバル変数をどのように宣言しますか?
- 18. 宣言型パイプラインでグローバル変数をどのように扱いますか?
- 19. グローバル関数変数が定義されていません
- 20. 基本クラスの派生クラス関数をどのように友人にすることができますか?
- 21. どのような違いが完全なクラス静的とクラスの静的な関数を作る
- 22. 関数内のクラスをどのように変更できますか?
- 23. 親クラスのロジックと関数をどのように共有できますか?
- 24. 関数内からグローバル変数を変更できません
- 25. コードが関数内の中括弧で囲まれているとどうなりますか?
- 26. Objective Cのインスタンス変数が静的/クラス/グローバル変数のように動作するのはなぜですか?
- 27. C++クラスのグローバル関数getlineのオーバーロード
- 28. ルビのグローバル変数はどのようにグローバルになっていますか?ここ
- 29. VBAクラス内でグローバル定数、型および関数を使用するのは良い方法ですか?
- 30. クラスの静的関数は、グローバル静的変数にアクセスできますか?