![](/img/trans.png)
[英]How do I create instance of class implementing generic interface with base type
[英]How do I create Optional Type injection for a base class?
在常规的敏捷编程技术过程中,我经常进行大量的重构。 如果我发现常见的东西,它们就是基类的候选者。 假设这个代码模式:
public Subclass : BaseClass{
private dynamic SomeValue = null;
public Subclass(){
SomeValue = BaseClass.Method<T>();
}
}
一切正常,直到我厌倦了不断地将类型注入到方法中。 为什么不将类型注入基类呢? 但是等一下,我不想重做上面已经使用这种模式的 20 个类。 现在我有两个可以使用的潜在模式,这是第二个。
public Subclass : BaseClass<T>{
private T SomeValue = null;
public Subclass(){
SomeValue = BaseClass.Method();
}
}
第二个模式可能是第一个示例的逻辑推导,我们只是将类型移动到类 CTOR 而不是在每个方法中使用泛型类型。
我想问社区他们如何在不更改任何当前代码但添加对泛型类型基类模式的支持的情况下完成这两种构造的想法。
四人帮再一次说得对,“偏向构图胜过传承”。 在这种情况下,术语 BaseClass 可能不合适,但是您可以通过没有真正问“这真的是一个 Baseclass?”来了解我们的 baseclass 概念在开始时是多么错误。
public Subclass {
private BaseClass bc1 = null;
private BaseClass<SomeType> bc2 = null;
private dynamic SomeValue = null;
public Subclass(){
//I still have base class operation ability, but now...
bc2 = new BaseClass<SomeType>();
SomeValue = bc2.Method();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.