gpt4 book ai didi

c# - 您可以修改父类(super class)的私有(private)字段吗?

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:14 24 4
gpt4 key购买 nike

我正在使用一个闭源基类。我能否以某种方式更改继承类的基类中的私有(private)字段?

假设类结构如下:

public class Parent
{
private bool age;
}

public class Baby : Parent
{
public bool newAge{
get {
return age;
}
}
}

这目前给你一个编译时错误:

 'Parent.age' is inaccessible due to its protection level.

如何从 Baby 类访问“年龄”字段?你能用reflection吗或类似的东西?

最佳答案

你可以,使用反射。它看起来像这样:

public class Baby : Parent
{
private readonly FieldInfo _ageField = typeof(Parent).GetField("age", BindingFlags.NonPublic | BindingFlags.Instance);
public int newAge
{
get
{
return (int)_ageField.GetValue(this);
}
set
{
_ageField.SetValue(this, value);
}
}
}

如果它是由第 3 方提供的,则没有什么可以阻止他们对其进行更改、重命名或将其全部删除。这是 private 的要点之一。请记住,出于某种原因,它可能是私有(private)的。在你不应该的地方修修补补可能会导致意想不到的结果。

关于c# - 您可以修改父类(super class)的私有(private)字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8566879/

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