経由リテラルを取得しよう:私は次のコードがあると反射
Container.cs
public class Container
{
public readonly string IdType;
public Container(string aIdType)
{
IdType = aIdType;
}
}
SuperContainerAは.cs
public class SuperContainerA : Container
{
public SuperContainerA(/*x parameters*/) : base("A") {}
}
をSuperContその上でainerB.cs
public class SuperContainerB : Container
{
public SuperContainerB( /*y parameters*/) : base("B") {}
}
SuperContainerToTheInfinityAndBeyond.cs
public class SuperContainerB : Container
{
public SuperContainerB( /*y parameters*/) : base("It's Over 9000!") {}
}
、私が取得しようとしていること""と"B"ですそれらはコンストラクタからTypeIdに送信されています。
ここでキャッチするのは、プログラムの初期化中に、それらのクラスのインスタンスを作成する前にこれらの値を取得する必要があるため、ここでリフレクションを使用することが最善の策だと思いました。 (注:各コンストラクタのパラメータの数が同じであれば、値を取得するクラスのインスタンスを作成することは有効ですが、変更することができます:
リフレクションを使用して(ソースコードのようなものが見える場合は、Regexを使って値を取得することができます)(参考:ソースをリソースファイルとしてとして私のプログラムに組み込むことはオプションではありません:P)
私は当時つかむために、後にリフレクションを使用することができるように、その後に値と力命名規則を保持するための定数を宣言すると思っていますので。以下のような...
public class SuperContainerA
{
public const string ctIdType = "A";
}
public class SuperContainerB
{
public const string ctIdType = "B";
}
をmething ...しかし、これらのconstsは宣言している場合されている場合、私は私がチェック助けるために何かを持っていないので、私は、これがこの問題への最善のアプローチであるかどうかわからないんだけど彼らはコンパイル時に適切な名前を得ました。
実際には、言語に何らかの静的継承があると、この状況では多くの助けになりますが、静的継承は治療法よりも痛みを感じているプログラマーもいます。
とにかく、私は代替手段を探しています。どんな考えも大歓迎です。
あなたは正確に何をしようとしていますか?オブジェクトを作成する前に値を知ることから得られるメリットは何ですか? – cadrell0