私は次のものを持っており、ある時点で のために作成する必要がありFailuresますValidations。から派生する各型には、前述の の実装であるwhereValidationから派生する型が 1 つだけあると仮定します。Failure<T>TValidation
の実装数が増えているため、次のようなメソッド内で、派生元の正しい型をインスタンス化し、そのメソッドを呼び出すValidationことができる必要があります。Failure<T>,link
void recordFailureForValidation(Validation v) {
   Type failureType = dict[v.GetType()];
   Object failure = Activator.CreateInstance(failureType);
       // how do I call failure.link(v) ?
}
Failure<T>実行時に、辞書はgivenから派生した型を教えてくれますT。Failure<T>( Failure1、 、など...)をインスタンス化することはできますが、新しく作成したインスタンスの public フィールドFailure2を呼び出す方法が見つかりません( 、、などの意味のあるすべての用途を使用することによって)。 )linkreferenceFailureGetMethodMakeGenericMethodInvoke
public class MyReferenceClass<T>
  where T : Object, new() {
   public void link(T arg) { ... }
}
public abstract class Failure<T>
   where T : ValidationRule, new() {
...
   public MyReferenceClass<T> reference;
...
}
public class Failure1 : Failure<Validation1> {
}
public class Failure2 : Failure<Validation2> {
}
public abstract class ValidationRule {
   ...
}
public class ValidationRule1 : ValidationRule {
...
}
public class ValidationRule2 : ValidationRule {
...
}