スレッドのタイトルが正確である場合は肯定的ではありません。"generic" Enumをパラメータとして受け取り、実行時にdiff列挙型にキャストするメソッド
私は別の列挙型のクラスを持っている:
public class Enums
{
public enum StringActions
{
FIRSTNAME,
MIDDLEINITIAL,
LASTNAME
}
public enum IntegerAction
{
RANGE,
RANDOM
}
}
私は、コンストラクタのオブジェクトを持って、私はStringActionまたはIntegerActionのいずれかを受け入れることができるだろうこれ、ジェネリック列挙型パラメータに取るしたいと思います。これらの列挙型をキーとして持つディクショナリ(各列挙型ごとに1つずつ)と値としてデリゲートがあります。私は渡された列挙型を使用して、その列挙型の正しいデリゲートを検索してから、いくつかの作業を行いたいと思います。
この実装では、「mAction」を正しい型にキャストする必要がありますが、これを実行時にどのように達成できますか?反射はここにあるのですか、それとも別の方法ですか?
'IF(:出力を行うよう
mAumptionはEnums.StringActionです) ' –
これは何がポイントですか?なぜ、それぞれの型に対して 'DataPoint()'のオーバーロードがありますか?そうすれば、実行時に型をチェックする必要はありません。コンパイラはすべての重い作業を行います。それがあなたのケースではうまくいかない場合は、そのことについてもっと明確にする必要があります。コンテキストと制約を明確に示す良い[mcve]を提供し、試したことと具体的に何が問題になっているのかを正確に説明します。 –
可能であれば、メソッドのオーバーロードが優先されます(下の回答者1人は、その回答を反映するために十分に同意しています)。マークされた複製は、他の多くのものと同様にそのアプローチを示しています。 IMHOでは、「動的」を使用するオプションは、次に直線的な過負荷に適しています。依然として宣言しなければならないオーバーロードが使用されますが、オーバーロードの解決はコンパイル時ではなく実行時に処理されます。あなたのケースでそれらのどちらも動作しない場合は、他の選択肢がたくさんあります。 –