gpt4 book ai didi

c# - 使用 Actvator.CreateInstance 创建具有私有(private)构造函数的类的对象?

转载 作者:行者123 更新时间:2023-11-30 19:49:42 57 4
gpt4 key购买 nike

通过使用 Activator.CreateInstance,我们可以创建一个类的对象,即使构造函数是私有(private)的。

有什么办法可以防止这种情况发生吗?

最佳答案

反射通常会破坏封装。 任何任何类型的私有(private)成员(构造函数、方法、属性、字段等等)都可以使用反射访问(Activator.CreateInstance 属于在这个保护伞下)。

就是说,如果你不想通过 the overload of Activator.CreateInstance generally used to overcome private constructors 实例化你的类型,您可以为您的类型完全摆脱它的无参数构造函数(通过仅定义带参数的构造函数)。

不过,对于使用指定参数的重载之一的人,您仍然无能为力。

关于c# - 使用 Actvator.CreateInstance 创建具有私有(private)构造函数的类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549532/

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