簡體   English   中英

在架構中使用擴展方法

[英]Using extension methods in architecture

性能、memory、安全等有什么問題嗎? 在使用擴展方法?

我想在我的架構中大量使用擴展方法,

創建一個功能層(在 F# 中處理數據),將由主應用程序層(在 C# 中)使用,F# 擴展方法將在 dbcontext 實例上調用,例如context.doSomething(); 順便說一句,當想要使用它們而不是使用它們作為擴展方法時,不要實例化服務(類)

重要嗎?

擴展方法

var newString = myString.DoSomething();

只是語法糖

var myString = StringHelper.DoSomething(myString);

因此,以與任何其他static方法相同的考慮來對待擴展方法。 性能、安全性、memory 用法都應該相同。

有什么問題嗎

讓我們來看看....

表現

不,這是 static 方法調用的語法糖。 沒有不同。

memory

我是不是說 static 方法調用,帶有 this 指針。 沒有不同。

安全

使用 this 指針調用 Static 方法。 沒有不同。 標准安全適用。

那說...

ETC

擴展方法有幾個可能的問題。

首先,您必須使用數百個擴展方法重載 DbContext。 這失去了實際進行某種邏輯分組的能力。 人們會感到困惑,甚至可能對特定方法的來源感到困惑。

其次,您成功地破壞了 inheritance 和依賴注入的使用。 擴展方法本質上是static方法,所以不能抽象和覆蓋,實例上沒有構造函數調用依賴注入。

作為架構的基礎,我會非常小心——你可能會成功地破壞所有構成良好架構的東西。 顯然,這取決於確切的用例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM