gpt4 book ai didi

c# - 使用依赖注入(inject)在构造函数之外创建类的新实例

转载 作者:行者123 更新时间:2023-11-30 14:09:17 24 4
gpt4 key购买 nike

我正在尝试一个示例应用程序来测试依赖注入(inject)。在使用 DI 之前,我的类中有以下方法:

public IQueryable<BookDTO> GetBooks()
{
var books = from b in db.Books
select new BookDTO()
{
Id = b.Id,
Title = b.Title,
AuthorName = b.Author.Name
};

return books;
}

BookDTO是另一个项目中定义的数据传输对象。现在我想将我的项目松散地耦合在一起。所以我创建了 IDTOBase 接口(interface)并让 BookDTO 实现它。我有一个统一容器,我已将 BookDTO 类相关注册到 IDTOBase。

但是我将如何在我原来的方法中重写 LINQ 查询?什么将取代“new BookDTO()”?

谢谢

最佳答案

您从我认为的部分答案开始:“BookDTO 是一个数据传输对象”。因此,抽象它没有什么值(value),因为它属于您应用程序的一个非常具体的层。

BookDTO 的作用是作为一本书的纯数据表示(以某种可能的可序列化形式)。这将发生在您的应用程序堆栈的低级别。任何需要使用此类数据的代码都应该创建一个可以在代码中使用的域对象“Book”。这将图书数据 (BookDTO) 的持久性和检索与其域表示 (Book) 分离。

我认为您的接口(interface)定义不符合这个目的,因此 DI 在这里不符合目的。我觉得 DI 在这里发挥作用的地方是 Book DTO 的检索。加载书籍数据的类将注入(inject)此类服务并使用它来检索 BookDTO 实例。

关于c# - 使用依赖注入(inject)在构造函数之外创建类的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30171506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com