Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# AutoMapper创建内部类的对象,这是怎么回事?_C#_.net_Automapper - Fatal编程技术网

C# AutoMapper创建内部类的对象,这是怎么回事?

C# AutoMapper创建内部类的对象,这是怎么回事?,c#,.net,automapper,C#,.net,Automapper,这可能非常简单,我只是想知道AutoMapper如何能够使用内部构造函数创建类的实例 因此,我有一个4个项目UI-BLL实体DAL BLL拥有所有映射信息,DAL从DB获取数据,并在具有内部构造函数的实体类上创建一个新实例 在达利,我知道 Mapper.Map<dalObjct, EntityObject> (_db.GetItem()) Mapper.Map(_db.GetItem()) 它返回类型为EntityObject的对象。这一切都是可行的,但我想知道当AutoMapp

这可能非常简单,我只是想知道AutoMapper如何能够使用内部构造函数创建类的实例

因此,我有一个4个项目
UI-BLL实体DAL

BLL拥有所有映射信息,DAL从DB获取数据,并在具有内部构造函数的实体类上创建一个新实例

在达利,我知道

Mapper.Map<dalObjct, EntityObject> (_db.GetItem())
Mapper.Map(_db.GetItem())
它返回类型为
EntityObject
的对象。这一切都是可行的,但我想知道当AutoMapper的构造函数被标记为internal时,它是如何创建EntityObject的实例的

当AutoMapper是构造函数时,它如何创建EntityObject的实例

标记为内部

Automapper用于检索类型元数据,所以,构造函数的可见性不是问题

为什么汽车制造商会这么做

因为是你让它这么做的

这不是对抽象的突破吗

不,不是。

自动映射和反射都只是工具。当你使用某种工具时,你必须知道如何、何时以及使用它做什么。

你可以用反射做很多令人惊奇的事情:,是的,我确信反射会发生,但automapper为什么要这样做?这不是对抽象的破坏吗?@Muds:您将内部类型作为参数传递。您希望Automapper有什么行为?tbh:我希望异常是无法实例化程序集中不存在的内部对象。@Muds:由于此代码是编译的,
EntityObject
type在DAL程序集中可见。这意味着,该类型不是
内部
,或者您已经设置了
内部visibleto
属性。那么,怎么了?想想,如果我们在不知不觉中使用这些工具,克服基本限制有多容易。我同意你的观点,关于如何使用这些工具,责任在于我们,但同样的论点也可以用来解释为什么我们有抽象,因为用户必须始终知道使用什么和如何使用。。我理解,在某些情况下,重要信息不可用,因此提供了一些灵活性。。但在这种情况下,这种灵活性似乎有点不必要,因为在实例化新对象时,可以检查构造函数的可用性。