我正在嘗試正確管理 asp.net core 中的資源。是否有必要注冊我在依賴注入容器中創建的每個物件?如果我在依賴注入容器內注冊一個物件,我在該物件內創建的物件會發生什么?例如:
services.AddScoped<ISimpleObject1, SimpleObject1>();
public class SimpleObject1 : ISimpleObject1 {
public const string Message = "Hello";
public SimpleObject2 simpleObject2 = new SimpleObject2() {
Message2 = "Hello again";
};
}
我對 asp.net 核心和 CLR 運行時相當陌生。我的想法是我只需要注冊 IO 密集型或網路資源繁重的類。我想以盡可能高效的方式撰寫應用程式,因此將不勝感激任何建議或建議。
uj5u.com熱心網友回復:
一般來說,依賴注入與解決性能或資源問題無關。它是一種使用 IoC 原則使您的類松散耦合并分離關注點的設計模式。
您不必將所有依賴項都注冊為服務。這取決于您的應用程式架構。根據經驗,當類的職責之間有明確的界限時,我會創建和注冊服務。
您在注冊的服務中實體化的物件 (SimpleObject2) 將與您的服務 (ISimpleObject1) 具有相同的生命周期。
有關使用壽命的更多資訊,請參閱https://docs.microsoft.com/en-us/dotnet/core/extensions/dependency-injection#service-lifetimes。
uj5u.com熱心網友回復:
我為了向依賴服務注冊一個物件,您需要指定它在依賴服務中實作/表示的型別。
您的代碼可能無法正常作業,因為該類SimpleObject1沒有繼承/實作ISimpleObject1。
話雖如此,您在這里傳遞了兩種型別。它代表的型別 ( ISimpleObject1) 和實作型別 ( SimpleObject1)。依賴服務不會查看物件來注冊它們,因為它不知道它們代表什么型別。這也可能是一個性能問題。反射非常廣泛。
我的建議是使用services.Add*()方法注冊您需要的每項服務。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/360886.html
下一篇:DDD通過多層過濾器
