如何为基类创建可选类型注入?

时间:2015-04-01 11:52:51

标签: c# generics

在常规敏捷编程技术的过程中,我经常进行大量的重构。如果我发现常见的东西,他们是基类的候选人。假设这个代码模式:

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而不是在每个方法中使用泛型类型。

我想问社群他们如何在不改变任何当前代码的情况下完成这两个构造的想法,但是增加了对泛型类型基类模式的支持。

我已阅读其他关于“可选通用类类型”的帖子,其中大部分都被StackOverFlow Nazi Soup Police立即关闭。

1 个答案:

答案 0 :(得分:0)

“四人帮”再一次是对的&#34;赞成作品而非继承&#34;。在这种情况下,可能使用术语BaseClass是不合适的,但是你可以看到我们的基类概念在开始时是如何错误的而不是真的要求&#34;这真的是一个基类吗?&#34;

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();
 }

}