wei*_*mat 1 c# constructor strategy-pattern
在C#中为模板/抽象类的构造函数实现策略的最佳方法是什么?我有几个类都基于解析构造函数中的字符串.解析是在静态方法中完成的,该方法创建键值对的列表,并且对于所有类都是通用的,但是某些字段对于所有类也是通用的 - 因此我使用抽象模板类.
问题是我没有看到继承抽象基类的构造函数实现的方法.否则,我会在基类中实现构造函数策略,并强制在一些抽象方法中处理列表.
编辑:添加模板类的不工作代码
public abstract class XXXMessageTemplate
{
public XXXMessageTemplate(string x) // implementation for the constructor
{
Parse(x);//general parse function
CommonFields();//filling common properties
HandlePrivateProperties();//fill individual properties
HandlePrivateStructures();//fill individual structures
}
abstract void HandlePrivateProperties();
abstract void HandlePrivateStructures();
}
The actual messages should not implement any constructor and only implement the HandlePrivateProperties and HandlePrivateStructures functions.
Run Code Online (Sandbox Code Playgroud)
如果您希望基类构造函数的逻辑在派生类中运行,您通常只需调用它:
public Derived(...) : base(...)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
基类可以在构造函数中调用抽象/虚方法,但由于派生类的构造函数体尚未执行,因此通常不赞成.(你想要真正强调这一点.)
这回答了你的问题了吗?我不完全确定我理解这个问题 - 一些伪代码会有所帮助.
编辑:派生类必须实现构造函数.构造函数不是继承的.如果未指定任何构造函数,编译器将提供无参数构造函数,该构造函数调用基本无参数构造函数.但是,您可以轻松编写具有相同签名的构造函数,并只调用基类构造函数:
public Derived(string x) : base(x)
{
// Base constructor will do all the work
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
567 次 |
| 最近记录: |