我有一个类层次结构,负责将一个模型(或消息)解析或映射到另一个。它具有非平凡的逻辑。
internal interface IMessageParser<T, K>
where T : class
where K : class
{
K Serialize(T originalMessage);
T Deserialize(K concreteMessage);
}
internal abstract class OriginalToConcreteMessageParser : IMessageParser<OriginalMessage, ConcreteMessage>
{
// some private methods that do stuff and are called in the Serialize() method
public virtual ConcreteMessage Serialize(OriginalMessage originalMessage)
{
// some stuff
}
}
这些具体的解析器有 21 个:
internal sealed class OriginalToConcreteMessageParserFooMessageParser : OriginalToConcreteMessageParser
{
}
internal sealed class OriginalToConcreteMessageParserBarMessageParser : OriginalToConcreteMessageParser
{
}
我想添加一个新的私有方法OriginalToConcreteMessageParser
并在Serialize()
. 让我们调用这个方法Baz()
。
我可以创建OriginalToConcreteBazMessageParser
并使所有 21 个具体实现都继承自此,但我不希望这样做。
提供的功能Baz()
绝对是在OriginalToConcreteMessageParser
.
总之,我想注入一个方法并在不接触的情况下OriginalToConcreteMessageParser
调用它。Serialize()
OriginalToConcreteMessageParser