C# 改进这个泛型抽象类
我有下面的抽象类设计,我想知道是否有人可以提出任何改进建议,以加强需求的执行或简化ControllerBase的实现C# 改进这个泛型抽象类,c#,generics,oop,interface,C#,Generics,Oop,Interface,我有下面的抽象类设计,我想知道是否有人可以提出任何改进建议,以加强需求的执行或简化ControllerBase的实现 //Dependency Provider base public abstract class ControllerBase<TContract, TType> where TType : TContract, class { public static TContract Instance { get { return
//Dependency Provider base
public abstract class ControllerBase<TContract, TType> where TType : TContract, class
{
public static TContract Instance
{
get {
return ComponentFactory.GetComponent<TContract, TType>();
}
}
public TContract GetComponent<TContract, TType>() where TType : TContract, class
{
component = (TType)Activator.CreateInstance(typeof(TType), true);
RegisterComponentInstance<TContract>(component);
}
}
//Contract
public interface IController
{
void DoThing();
}
//Actual Class Logic
public class Controller: ControllerBase<IController,Controller>
{
public void DoThing();
//internal constructor
internal Controller(){}
}
//Usage
public static void Main()
{
Controller.Instance.DoThing();
}
//依赖提供程序库
公共抽象类控制器数据库,其中TType:TContract,class
{
公共静态TContract实例
{
获取{
返回ComponentFactory.GetComponent();
}
}
public TContract GetComponent(),其中TType:TContract,class
{
component=(TType)Activator.CreateInstance(typeof(TType),true);
注册表组件状态(组件);
}
}
//合同
公共接口IController
{
虚空打点();
}
//实际类逻辑
公共类控制器:ControllerBase
{
公共空间点滴();
//内部构造函数
内部控制器(){}
}
//用法
公共静态void Main()
{
Controller.Instance.DoThing();
}
以下事实应该永远是正确的
应始终实施t类型
(使用通用约束强制实施)t合同
必须是一个接口(找不到强制执行的方法)t合同
不应该有公共构造函数,而应该是一个内部构造函数,有没有办法使用TType
来强制实现这一点ControllerBase
必须是一个具体的类(没有将New()作为泛型约束,因为构造函数应该标记为Internal)TType