在C#中使用Factory中的对象编写扩展方法

时间:2013-04-18 23:16:08

标签: c# design-patterns extension-methods factory-pattern

我正面临一个关于如何将源自工厂的对象正确集成到扩展方法中的设计问题。

假设我有对象Foo,我通过像TopLevelStatic.GetFoo()这样的工厂方法得到Foo。 Foo有一个功能框架,再次作为工厂实现。

Foo.GetBar();
Foo.GetBaz();
Foo.GetBaz().GetBiz();

假设我想围绕需要Foo的对象编写一堆扩展方法,例如:

public static MyObj ToMyObj(this Biz biz, Foo foo){      
    return new MyObj(biz + foo.GetBar());
}

现在我发现自己的问题是,我正在编写的几乎所有扩展方法都需要Foo的某些容量,这使我怀疑扩展是否应该实际上将Foo挂起作为顶级对象而不是像Biz这样的相关对象的逻辑位置(MyObj与Biz有一些业务逻辑关系)。

我只是将Foo传递给我的所有扩展方法吗?那感觉不对。我如何有效地静态对待一个我无法控制的生命对象。如果它本身尚未被其他代码设置,那么实现抛出GetInstance异常的单例是否在语义上是正确的? 有没有办法用DI执行此操作,因为没有构造函数或包含扩展方法的实际对象

0 个答案:

没有答案