我有以下内容,有时我需要Failures为Validations. 我们假设每个派生自的类型都有Validation一个且只有一个派生自上述实现的类型。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, Failure2, 等...),但我找不到如何调用我新创建的实例link的公共字段(通过使所有对我有意义的使用, ,等... )referenceFailureGetMethodMakeGenericMethodInvoke
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 {
...
}