問題タブ [system.reflection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - System.Reflection.Assembly での Null 参照例外
内部メール報告用のライブラリを開発しました。別のプロジェクトからそのライブラリを使用している場合(参照を追加することにより)。
次の行で与えNullReferenceException
ます。
Assembly が null である理由は何ですか?
.net - System.Reflectionなしでリフレクションを行う方法は?つまり、カスタムリフレクションクラスを構築しますか?
これはかなり学術的な質問だと思いますが、なしで振り返るにはどうすればよいのでしょうかSystem.Reflection
。
もっと要点を言えば、System.Reflection
クラスがどのように機能しているか知りたいです。アセンブリをロードしてからデコードしてメタデータなどを取得する方法も知っているカスタムクラスを作成できますか?それはどのように行われますか?
または、System.Reflectionは、C#/。NETで直接アクセスできないCIL関数にコンパイルされますか?
c# - .NET REFLECTION での FieldInfo クラスの使用に関する問題
次の行では、sqlinsertcommand に関するこのパラメーターのコレクションに到達できませんが、次のコードで sqlinsertcommand とそのコマンドテキスト自体に到達できます。
>NET Reflection の fieldinfo またはその他の関連クラスを介して、その sqlparameter コレクションにアクセスするにはどうすればよいですか? 失礼に思えますが、助けや提案でさえ、私にとって大きな意味があります。
reflection - リフレクションを介してコマンドレットの動的パラメーターを取得する
Powershell は、コンテキストに基づいて、いくつかのパラメーター「動的パラメーター」を公開します。MSDN のページではメカニズムがかなり詳しく説明されていますが、これらについて調べるには、追加のパラメーターを含むクラスを返すGetDynamicParameters()を呼び出す必要があります。これらのパラメーターは、ReflectionOnly コンテキスト (つまり、型が ReflectionOnlyLoadFrom で読み込まれる) で、リフレクションを介して取得する必要があります (ここが要点です)。したがって、Assembly.InvokeMember("GetDynamicParameters") はありません。
これはできますか?
c# - C#のリフレクションアセンブリからの呼び出しコンテキストへのアクセス
XMLファイル内の変数に基づいて電子メールを送信するC#で記述されたWindowsサービスがあります。これには、XMLファイルで提供される接続文字列を介したSQLまたはMySQLデータベースへのアクセスが含まれます。また、C#またはVB.NETコードを評価する「カスタムフィールド」と呼ばれる機能を提供します。これにより、ユーザーはカスタムコードの結果をXMLファイルに入力して、電子メールの生成に使用することもできます。ここで、カスタムコードで、ユーザーがコードから呼び出すことができる一連のヘルパー関数を提供します。この関数は、フィールドの値を取得し、必要に応じて操作できます。
基本的に、XMLでは、ユーザーはアクセスする各データベースへの参照を設定し、次にそのデータベース内の各テーブル、次にそのテーブル内の各フィールドに、テーブル内の各データベース内で「0」(ゼロ)ベースのIEであるIDが与えられます。 idは(ゼロ)から始まり、各テーブル内でもフィールドは「0」(ゼロ)から始まります
特定のフィールドへの参照は、私がブレッドクラムと呼んでいるものでは次のようにフォーマットされています。
0,2,6(データベースID 0、データベースID0内のテーブルID2、データベースID0内のテーブルID2内のフィールドID6)
また
0,3,6(データベースID 0、データベースID0内のテーブルID3、データベースID0内のテーブルID3内のフィールドID6)
ユーザーは、カスタムコード内でヘルパー関数を呼び出すことができます。ヘルパー関数は、次のようなXMLファイルで参照した任意のフィールドの場合に応じて1つまたは複数の値を取得します。
このカスタムコードでわかるように、2つのフィールドが参照されています。1つはフィールドブレッドクラム「0,0,1」(データベースID 0、データベースID0内のテーブルID0、データベースID0内のテーブルID0内のフィールドID1)です。 )およびフィールドブレッドクラムが「0,0,2」の2つ(データベースID 0、データベースID0内のテーブルID0、データベースID0内のテーブルID0内のフィールドID2)
これらのブレッドクラムは、XMLで提供されるスキーマへの参照です。例:
基本的に、そのカスタムコードは、「FullName」という名前の文字列変数を作成し、メンバーの名と姓を取得して「」(スペース)文字で結合し、結果を「FullName」変数に格納してから結果を返します。 。その後、customCodeは、「C、0」C=Customなどのメッセージ内から呼び出すことができます。
ここに私の質問があります:
データベースフィールドなどのすべての処理はサービス自体の中で行われるため、Reflectionsを使用してサービス内からもカスタムコードが呼び出されます。ヘルパー(MailEngine)クラスから、サービスで使用される関数と変数にアクセスできます。ヘルパー(MailEngine)クラスが、サービスとは異なるコンテキストにあるカスタムコードに含まれていること。
たとえば、MailEngineクラスに次のような関数がある場合
この関数またはこのクラスの他の関数内から、関数を呼び出したり、サービス内にある変数を取得したりできるようにするには、何をする必要がありますか。
これは可能ですか、それともxmlドキュメントを再解析してデータベースに再接続し、すべてのフィールド値を再収集してそこから移動する必要がありますか...
どうすればもっと良いことを本当に聞くことができるのかわかりません。うまくいけば、これを理解し、提案をすることができます。
あなたが与えることができるどんな助けにも感謝します。
クリス
編集:
c# - 複数の設定ファイルにまたがる実行可能な設定をロードする方法は?
という Windows アプリケーションがありますTechReader
。その構成ファイルはTechReader.exe.config
. 構成の一部は、他の構成ファイルに保持されます。そのため、exe.config で作成された構成セクションからその構成ファイルを参照します。
ここで、リフレクションを使用してアプリケーションの構成全体をロードしたいと考えています。このようなコードを使用します。
TechReaderStarter
クラスは、出力がライブラリではなく Windows アプリケーションであるプロジェクトで定義されています。
上記のコードを使用するTargetInvocationException
と、ConfigurationErrorsException
- アプローチは正しいですか?
- exe.config
OpenExeConfiguration
と他の参照された構成ファイルをマージすることによって生成された最終構成をロードしますか? - どうすれば達成できますか?
注: この Windows アプリケーションを使用して、Windows サービスとしてインストールしたいと考えています。サービスの構成にServiceInstaller
記載ServiceInstaller
されているサービス名などの詳細がinstallutil
. このためには、リフレクションを使用してサービスの正確な構成を取得する必要があります。
silverlight-4.0 - Silverlight4で動的に読み込まれるアセンブリ名を取得する
ユーザーがファイル、具体的にはアセンブリをアップロードできるようにするSilverlight4アプリがあります。ファイルをアップロードする前に、彼らが選択したものが実際にアセンブリであることを確認したいと思います。また、そのアセンブリのフルネームも取得したいと思います。Assembly.Load(byte [])を使用しようとするとセキュリティ例外が発生しますが、実際にアセンブリをロードせずにSilverlightでアセンブリを検証する方法はありますか?サードパーティのアセンブリ情報が読み込まれている可能性がありますか?これを決定するためにバイト配列のバイトを調べる合理的に簡単な方法はありますか?
アップデート
以下は、アセンブリを開くことがバイト配列を調べるための合理的に簡単な方法で はないことを示しています。共通言語インフラストラクチャ
ありがとう、マット
c# - C# でリフレクションをキャッシュする方法
こんにちは、私はリフレクションにかなり精通しています。たくさんの例を見てきたので、リフレクションがどのように機能し、どのような目的で使用できるかを知っています。しかし、リフレクションをキャッシュする例は得られませんでした。また、それが何を意味するのかもわかりません。そして、どういうわけか、私が行っているプロジェクトでリフレクションのキャッシュを使用する必要があります。
したがって、誰かがこの概念を簡単に説明し、いくつかの例を挙げていただければ幸いです。既存の例へのリンクもいただければ幸いです。また、属性の反映とそのキャッシングについても説明してください。前もって感謝します。
よろしくウメール
c# - ICustomAttributeProvider.GetCustomAttributes() が Attribute[] ではなく object[] を返すのはなぜですか?
の代わりにICustomAttributeProvider.GetCustomAttributes()
returnが返されるのはなぜですか?object[]
Attribute[]
mscorlibの実装を使用し、ICustomAttributeProvider
システム アセンブリが型ではないオブジェクトを返す状況はありAttribute
ますか?
c# - 他のアセンブリによって参照されるメソッド
影響分析用のツールを開発しています。myAssembly で「myMethod」というメソッドを変更する場合、myAssembly を参照する他のすべてのアセンブリを取得する必要があり、以下のコードで取得しました。
しかし、ここで「myAssembly」の「myMethod」が呼び出されている/使用されているかどうかを知るにはどうすればよいですか? そうしないと、myAssembly を参照している他のすべてのアセンブリを取得します (たとえば、10 個) が、10 個のうち 1 個だけが呼び出され、myMethod が使用され、影響を受けます。
どんな助けでも大歓迎です