97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

為什么不自己做購物網站承接婚慶公司網站建設

鶴壁市浩天電氣有限公司 2026/01/24 09:15:34
為什么不自己做購物網站,承接婚慶公司網站建設,手繪動畫制作軟件,wordpress手機版怎么用一、充血模型和失血模型1. 充血模型的優(yōu)勢充血模型更加OOP充血模型代碼可讀性更好1.1 充血模型偽代碼var messageDto controller.ReadDto();var message messageDto.ToEntity();message.Save();1.2 失血模型偽代碼var messageDto controller.ReadDto();var message message…一、充血模型和失血模型1. 充血模型的優(yōu)勢充血模型更加OOP充血模型代碼可讀性更好1.1 充血模型偽代碼var messageDto controller.ReadDto();var message messageDto.ToEntity();message.Save();1.2 失血模型偽代碼var messageDto controller.ReadDto();var message messageDto.ToEntity();var messageService controller.GetMessageService();messageService.Save(message);2. 充血模型愛你不容易大部分程序員都知道充血模型好,想實現卻很難大部分業(yè)務邏輯都需要依賴外部服務充血模型需要用到外部服務,又不想依賴外部服務的具體實現很容易想到使用IOC的依賴注入來解決我們給DTO注入服務還行,因為IOC參與了controller過程當DTO發(fā)生轉化時,新增的服務IOC還是有點力不從心沒法引用外部服務的充血模型氣血不通,業(yè)務表達能力大大下降這也是大部分人棄用充血模型的主要原因,不好用還不如不用這個任督二脈PocoEmit可以幫你打通二、首先來個Case演示一下Dto轉化為實體但是實體有更多邏輯依賴外部服務,這些外部服務Dto不見得提供的了這就需要注入PocoEmit支持構造函數參數注入和屬性注入IMapper對象是默認支持注入的服務1. Entity比Dto多出來的Mapper可以注入class MessageDto{public string Message { get; set; }}class MessageEntity{public IMapper Mapper { get; set; }public string Message { get; set; }}2. 轉化并注入的代碼var mapper Mapper.Create();var dto new MessageDto { Message Hello UseMapper };MessageEntity message mapper.ConvertMessageDto, MessageEntity(dto);Assert.NotNull(message.Mapper);三、再演示注入自定義的服務1. UserDomain比Dto多出來的Repository可以注入class UserDTO{public int Id { get; set; }public string Name { get; set; }}class UserDomain(UserRepository repository, int id, string name){private readonly UserRepository _repository repository;public UserRepository Repository _repository;public int Id { get; } id;public string Name { get; } name;// ...}class UserRepository{void Add(UserDomain user) { }void Update(UserDomain entity) { }void Remove(UserDomain entity) { }public static readonly UserRepository Instance new();}2. 注冊、轉化并注入的代碼通過UseDefault可以注入服務IMapper mapper Mapper.Create().UseDefault(UserRepository.Instance);var dto new UserDTO { Id 1, Name Jxj };UserDomain user mapper.ConvertUserDTO, UserDomain(dto);Assert.NotNull(user.Repository);四、注入IOC容器的Case注入IOC容器需要安裝nuget包PocoEmit.ServiceProvider1. 包含IOC容器的實體class UserWithServiceProvider{public int Id { get; set; }public string Name { get; set; }public IServiceProvider ServiceProvider { get; set; }}2. 注冊、轉化并注入的代碼UseSingleton是把容器作為唯一容器注入UseScope是使用當前Scope子容器UseContext是在Mvc下,使用當前HttpContext的RequestServices子容器var services new ServiceCollection();var serviceProvider services.BuildServiceProvider();var mapper Mapper.Create();mapper.UseSingleton(serviceProvider);var dto new UserDTO { Id 1, Name Jxj };UserWithServiceProvider user mapper.ConvertUserDTO, UserWithServiceProvider(dto);Assert.NotNull(user.ServiceProvider);五、當然還可以注入容器內的服務1. UserDomain多出來的Repository需要注入這次我們用IOC來管理Repository這樣才能更好的利用依賴注入Repository可能還會依賴其他的服務手動維護服務對象可能會很麻煩,IOC容器擅長維護這些復雜關系class UserDomain(UserRepository repository, int id, string name){private readonly UserRepository _repository repository;public UserRepository Repository _repository;public int Id { get; } id;public string Name { get; } name;// ...}class UserRepository{void Add(UserDomain user) { }void Update(UserDomain entity) { }void Remove(UserDomain entity) { }}2. 注冊、轉化并注入的代碼通過UseScope注入IOC容器通過UseDefault告知這個類型從IOC容器中注入var services new ServiceCollection().AddScopedUserRepository();var serviceProvider services.BuildServiceProvider();var mapper Mapper.Create();mapper.UseScope(serviceProvider).UseDefaultUserRepository();var dto new UserDTO { Id 1, Name Jxj };UserDomain user mapper.ConvertUserDTO, UserDomain(dto);Assert.NotNull(user.Repository);六、支持IOC容器的特性支持FromKeyedServices支持FromServices1. FromKeyedServices標記注入點和服務鍵class UserDomain1([FromKeyedServices(User1)]UserRepository repository, int id, string name): UserDomain(repository, id, name){}class UserDomain2([FromKeyedServices(User2)] UserRepository repository, int id, string name): UserDomain(repository, id, name){}class UserDomain(UserRepository repository, int id, string name){private readonly UserRepository _repository repository;public UserRepository Repository _repository;public int Id { get; } id;public string Name { get; } name;// ...}class UserRepository(string tableName){private readonly string _tableName tableName;public string TableName _tableName;void Add(UserDomain user) { }void Update(UserDomain entity) { }void Remove(UserDomain entity) { }}2. 注冊、轉化并注入的代碼由于識別出FromKeyedServices,就不需要UseDefault這樣簡潔又優(yōu)雅string table1 User1;string table2 User2;var services new ServiceCollection().AddKeyedScoped(table1, (_, _) new UserRepository(table1)).AddKeyedScoped(table2, (_, _) new UserRepository(table2));var serviceProvider services.BuildServiceProvider();var mapper Mapper.Create();mapper.UseScope(serviceProvider);var dto new UserDTO { Id 1, Name Jxj };UserDomain user mapper.ConvertUserDTO, UserDomain1(dto);Assert.NotNull(user.Repository);UserDomain user2 mapper.ConvertUserDTO, UserDomain2(dto);Assert.NotNull(user2.Repository);七、競品類似的功能1. AutoMapper不支持AutoMapper的NullSubstitute用來指定源屬性為null時的默認值用AutoMapper實現類似功能需要復雜的自定義IValueResolver來實現PocoEmit在源無法匹配或源字段為null都可能觸發(fā)依賴注入2. EF有類似功能不過貌似只支持EF內部某些服務請參閱 EF Core實體類的依賴注入八、總結1. OOM映射需要依賴注入DTO、實體、領域模型如果有業(yè)務邏輯就需要依賴外部服務支持按類型注入,也支持按指定的參數或屬性注入支持FromKeyedServices和FromServices需要外部服務就需要依賴注入2. PocoEmit的依賴注入助力程序分層架構依賴注入的加持每一層想調用啥就調用啥同時也讓每一層更好的劃分讓調用啥,不讓調用啥更容易控制同時也讓業(yè)務需要劃分多少層就劃分多層變得簡單3. IOC容器使用需要注意簡單作業(yè)單容器,使用UseSingleton即可多線程需要使用UseScopeMvc(含WebApi)邏輯處理使用UseContextUseContext需要引用nuget包PocoEmit.Mvc如果是Mvc異步處理或Quartz類似作業(yè)不要用UseContext就怕異步中獲取到了HttpContext,但執(zhí)行中途被釋放了,后面就可能異常了
版權聲明: 本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若內容造成侵權/違法違規(guī)/事實不符,請聯系我們進行投訴反饋,一經查實,立即刪除!

全運網站的建設wordpress表格編輯

全運網站的建設,wordpress表格編輯,國貿網站建設公司,購物系統(tǒng)AI當“增長軍師”#xff1a;用戶增長引擎升級的前端落地全指南#xff08;小白版#xff09; 你有沒有過這種體驗#xff1a

2026/01/23 10:09:02

2020國內十大小說網站排名那個網站專門做幽默視頻的

2020國內十大小說網站排名,那個網站專門做幽默視頻的,永久免費制作網站,網站的類型和特色對于野外作業(yè)人員來說#xff0c;氣象水文數據的及時獲取直接關乎作業(yè)安全和效率。一款被作業(yè)人員稱贊“有了它#x

2026/01/22 22:39:01

可以直接進入的正能量網站百度電商推廣

可以直接進入的正能量網站,百度電商推廣,蘭州新區(qū)農投建設網站,一款非常不錯的seo網站優(yōu)化公司源碼微信小程序集成IndexTTS2云函數實現高質量語音合成 在智能客服、無障礙閱讀和兒童教育類應用中#x

2026/01/23 10:44:01

中國建筑工程考試網產品介紹網站如何做seo

中國建筑工程考試網,產品介紹網站如何做seo,衡陽網站頁面設計公司,學的專業(yè)是編課 網站開發(fā)英語翻譯目錄已開發(fā)項目效果實現截圖關于博主開發(fā)技術路線相關技術介紹核心代碼參考示例結論源碼lw獲取/同行可拿

2026/01/21 20:04:01

物流官網網站百度鏈接提交入口

物流官網網站,百度鏈接提交入口,寧波網站建設設計公司信息,頁面模板現在不能用了嗎FaceFusion支持4K輸入輸出#xff0c;高清換臉不再是難題 在影視特效、虛擬偶像和數字人內容爆發(fā)的今天#xff

2026/01/23 08:16:01