gpt4 book ai didi

c# - 限制对继承属性的访问 C#

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

假设我继承了一个类,它有几个公共(public)属性和/或方法,但是我不希望它们成为我类的公共(public)属性/方法——换句话说,我想让这些属性成为我的类的 protected 属性类。

这能实现吗?

我希望我说得足够清楚,如果还不清楚,请告诉我,我会尝试更好地解释自己。

编辑:

好的,谢谢大家的回答,但我认为我不够清楚。我想要完成的是:

我编写了一个扩展 ListView 控件的 Windows 控件。 ListView 有一个公共(public)集合 Items,可以修改。这一切都很好,但是由于我需要额外的数据,我编写了将项目添加到 ListView 的新方法。

到目前为止一切都很好,但是 Items 集合仍然可以被任何东西修改,这是一个问题,因为如果通过直接操作 Items 集合添加一个项目,并没有收集到我需要的所有数据,从而导致错误.

由于我们希望在不同的项目中多次重用这个控件,我们担心迟早会使用默认的将项目添加到 Items 集合的方式(真的只是时间问题)。我们只是在寻找一种方法来防止这种情况发生,例如当 Items 集合变大时抛出异常,但这是预期的方式。

我希望现在这一切都有意义。

最佳答案

永不言败。这可能不是最好的主意,但它似乎对我有用。这通过在子类中重新实现它然后使用属性隐藏它来隐藏项目。我添加了一个“CustomExposedItems”属性,因此您可以看到现有项目仍然可以在底层 ListView 中访问。

public partial class CustomListView : ListView
{
public CustomListView()
{
InitializeComponent();
}

public System.Windows.Forms.ListView.ListViewItemCollection CustomExposedItems
{
get
{
return base.Items;
}

}

[EditorBrowsable(EditorBrowsableState.Never)]
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Obsolete("Use the new custom way of adding items xyz")]
public new System.Windows.Forms.ListView.ListViewItemCollection Items
{
get { throw new NotSupportedException(); }
}

}

关于c# - 限制对继承属性的访问 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/888198/

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