在架构中使用扩展方法

Using extension methods in architecture

性能、内存、安全等方面有没有问题?在使用扩展方法?

并且我想在我的架构中大量使用扩展方法,

创建一个函数层(在 F# 中处理数据),主要应用层(在 C# 中)将使用 F# 扩展方法将在 context.doSomething(); 等 dbcontext 实例上调用,顺便说一句不要实例化服务(类)当想使用它们而不是将它们用作扩展方法

重要吗?

一种扩展方法

var newString = myString.DoSomething();

只是语法糖

var myString = StringHelper.DoSomething(myString);

因此,请像对待任何其他 static 方法一样对待扩展方法。性能、安全性、内存使用都应该完全相同。

Is there any problem with

让我们看看....

performance

不,这是静态方法调用的语法糖。没有区别。

memory

我说的是静态方法调用吗,带有 this 指针。没有区别。

security

使用 this 指针的静态方法调用。没有不同。适用标准安全性。

这就是说...

etc

扩展方法可能存在几个问题。

首先,您必然会使用数百种扩展方法来重载 DbContext。这失去了实际进行某种逻辑分组的能力。人们会感到困惑,甚至可能对特定方法的来源感到困惑。

其次,你成功地破坏了继承和依赖注入的使用。扩展方法本质上是静态方法,不能抽象和重写,实例上没有构造函数调用依赖注入。

作为架构的基础,我会非常小心 - 你可能会成功破坏构成良好架构的所有内容。显然,这取决于确切的用例。