ユーザーが質問に対する回答を変更したときに、理由の集合から理由を指定し、選択した理由に応じて、私は特定のサブクラスを作成したい。だから、ChangeReason
クラスで作成する型を保持したいと思います。Typeをパラメータとして使用する方法コンパイル時に基本クラスに制限する
public class ChangeReason
{
Type _TypeToCreate;
public void SetQuestionType(Type value)
{
if (!value.IsSubclassOf(typeof(BaseAnsweredQuestion)))
throw new InvalidOperationException("Invalid Type");
_TypeToCreate = value;
}
}
は、おそらく一般的な方法を使用して、コンパイル時にタイプを制限する方法はあります:私はタイプが実行時に正しく指定されていることを確認し、このようにそれを行うことができますか?私はこれを次のように呼んでいます:
var reason = new ChangeReason();
reason.SetQuestionType(typeof(AnsweredQuestion));
これは、簡単に "C#はジェネリック型を制限する" グーグルで答えている... [MSDNを参照してください。記事](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters) –
downvoteによって失望し、グリップに到達しようとする障壁を打った後ジェネリックで私は手を差し伸べていた助けを求めて、私は誰もがこの質問が「ひどく駄目で無駄に費やされた郵便」と言えると思っているのに驚いています。 https://stackoverflow.com/help/privileges/vote-down – Colin