1

コンストラクターが持つパラメーターの数を判別する方法を見つけようとしています。

これで、パラメーターのない1つのコンストラクターと、4つのパラメーターを持つ1つのコンストラクターを作成しました。

C#で、使用または指定されたコンストラクターに含まれるパラメーターの数を確認する方法はありますか?

つまり、ログファイルを読み取るために3番目のコンストラクターを使用しています。これらのログファイルはstring[]要素として読み取られ、引数と同じ数だけ存在する必要があります。そうでない場合は、ログファイルが破損しています。

しかし、私は多くのサブクラスを使用しており、各コンストラクターには、特定のログタイプに対してより多くのパラメーターがあります。

だから私は知りたかった:コンストラクターのパラメーターの量をチェックする方法はありますか?

はい、これは学校の課題です。実際にどの用語を探すべきかわからないので、VS2008オブジェクトブラウザは現在あまり役に立ちません。

4

5 に答える 5

4

System.Reflection 名前空間を確認する必要があります。より具体的には、次の方法でクラスのコンストラクターのリストを取得できます。

 System.Type.GetType("MYClassName").GetConstructors()
于 2008-11-03T15:06:35.150 に答える
2

コードを少し考え直す必要があるように聞こえます。あなたの説明から、コンストラクターの引数の数を動的に決定しなければならないことは少し厄介に聞こえます。作成されるオブジェクトのタイプは実行時に決定されるため、ファクトリデザインパターンを検討することもできます。私があなたの問題を誤解しているなら、他の答えによって指摘されているように反射を使うことはあなたのためにトリックをするでしょう。

于 2008-11-03T15:11:21.600 に答える
0

この情報が必要なコンテキストは正確にはわかりませんが、実行時に動的に必要な場合は、System.Reflection名前空間を試してください。

それ以外の場合、Intellisenseドロップリストには、使用可能なすべてのコンストラクターが表示されます...

于 2008-11-03T15:05:08.010 に答える
0

ログファイル(または現在の生のログファイルエントリ)への参照を取得して読み取り、問題が発生した場合にエラーをスローするコンストラクターを作成できませんか?

コンストラクターが持つ要素の数を調べる必要がある理由を理解しようとしています。ログファイル内の要素の数が、作成するパブリケーションのタイプを特定するために発生することを信頼することは、これまで見てきたことからすると弱い設計のようです。

あなたの直接の質問に対する簡単な答えは、以前の答えで述べられたことです:あなたが作成しようとしているクラスのコンストラクターを熟考し、そのパラメーターを調べてください。

于 2008-11-03T15:33:02.337 に答える
0

パラメータの量は一定です。私はそれらを定義しましたが、それらは変更されていません。

何が起こっているかというと、私は一種の出版物ツリーをシミュレートしており、その中で分割を行っています (別名サブクラス)

したがって、サブクラスのすべてのコンストラクターには、継承元のパラメーターまたはクラスがあります。

したがって、出版物の種類ごとに長さが異なります。

ログ ファイルを読み取ってパブリケーション データを視覚化する必要がある場合に備えて、3 番目のコンストラクターがあります。

ただし、ログ ファイルが破損している可能性があることを考慮する必要があります。これには、ログ ファイルにすべてのパラメータのデータがない可能性が含まれます。

これが、コンストラクターでパラメーターの量を見つける方法を知る必要がある理由です。パラメーターの量と比較して、ログにあるデータの量を確認する必要があります。

于 2008-11-03T15:26:24.800 に答える