gpt4 book ai didi

.net - 使用 .NET 反射的私有(private)方法。为什么?

转载 作者:行者123 更新时间:2023-12-01 08:20:13 25 4
gpt4 key购买 nike

我之前多次在公共(public)方法上使用反射,但我从未意识到也可以调用私有(private)方法。见 Reflection with private members .

为什么首先允许这样做?这不是要打破“私有(private)”就是“私有(private)”的规则吗?

最佳答案

private在 C# 中确实只是语言规范的一部分;在 C# 语言中,以及在 Visual Basic 语言或任何其他合理的 .NET 语言中(包括 CIL,所有 .NET 语言编译成的),都无法访问 private (或 protected ,如果您不在派生类中)成员 语言 .然而,仅仅因为该语言不支持公开访问privateprotected成员(member)不代表底层框架无法向这些成员提供访问权限。

这是通常 的情况之一。不应该 使用反射等变通方法来访问或修改 privateprotected成员,但框架允许无论如何。一般来说,你应该有一个 非常访问 private 的充分理由或 protected成员(member);例如,其中一个原因是实现了一个序列化程序,该序列化程序需要查看对象的内部状态以正确序列化对象。如果你不做这样的事情,你应该真正考虑重新实现你在里面闲逛的类,这样你就不需要在你的程序中使用反射。

关于.net - 使用 .NET 反射的私有(private)方法。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1811761/

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