Tag: 私人

在C#4.0中,有没有办法让一个类的私有成员只能用于特定的其他类?

我们正在创建一个对象层次结构,其中每个项目都有一个其他项目的集合,每个项目也有一个指向其父项目的Parent属性。 很标准的东西。 我们还有一个ItemsCollection类,它inheritance自Collection ,它本身有一个Owner属性,指向该集合所属的项目。 再一次,没有什么有趣的。 当一个项目被添加到ItemsCollection类时,我们希望它自动设置Item的父项(使用集合的Owner属性),当项目被删除时,我们想要清除父项。 这就是事情。 我们只希望Parent setter可用于ItemsCollection ,没有别的。 这样,我们不仅可以知道项目的父项是谁,还可以通过检查Parent的现有值或者让某人随意将其更改为其他内容来确保项目不会添加到多个集合中。 我们知道如何做到的两种方式是: 将setter标记为private,然后将集合定义包含在项本身的范围内。 亲:全面保护。 Con:嵌套类的丑陋代码。 在Item上使用私有ISetParent接口,只有ItemsCollection知道。 亲:更清晰的代码,易于遵循。 Con:从技术上讲,任何知道界面的人都可以投射Item并获得setter。 现在技术上通过反思任何人都可以得到任何东西,但仍然……试图找到最好的方法来做到这一点。 现在我知道C ++中有一个名为Friend的function,或者让你在一个类中指定一个私有成员可用于另一个类的完美场景,但我不知道C#中有任何这样的东西。 在伪代码中(例如,所有属性都更改了通知,为了简洁而删除了这些通知,我只是在这里输入,而不是从代码中复制),我们有… public class Item { public string Name{ get; set; } public Item Parent{ get; private set; } public ItemsCollection ChildItems; public Item() { this.ChildItems = new ItemsCollection (this); } } public class ItemsCollection […]

C#覆盖公共成员并将其设为私有

可能? 你能改变任何 东西的访问权限吗?