2

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

假设我有对象 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 传递给我的所有扩展方法吗?那感觉不对。我如何有效地对一个我无法控制其生命周期的对象进行静态处理。如果 _self 尚未由其他代码设置,那么实现引发 GetInstance 异常的单例在语义上是否可以?由于没有构造函数或包含扩展方法的实际对象,因此有没有办法使用 DI 执行此操作

4

0 回答 0