通过在 C# 中使用代理,将构造函数调用替换为工厂方法调用

Replacing a constructor call with a factory method call by using a proxy in C#

我可能要疯了,但我发誓我看过一个片段,它允许代码的使用者编写 new Foo() 而像 FooProxy.Create() 这样的东西在幕后被调用而不是构造函数。我一直在寻找它,寻找它,但现在我根本找不到它。我根本不打算使用它,因为它对我来说看起来像是一种反模式,但我想确保我没有梦想它。

答案似乎是没有....你只是在做梦。来自 :

Q:Create constructor(?) to retrieve object from cache or recreate if null

A: You can't create a constructor which does that. A constructor always creates a new object. Instead, create a static factory method:

请注意,肯定可以使用 Fody(一种能够修改程序集 post 编译的工具)创建一个插件,将直接 new Foo() 替换为 FooProxy.Create()