gpt4 book ai didi

c# - 在集合中的对象上设置只读属性

转载 作者:行者123 更新时间:2023-11-30 16:47:11 25 4
gpt4 key购买 nike

我有一个与 this other post 类似的问题我有课

public class MyClass
{
// other properties
public bool IsDefault { get; internal set; }
}

我定义了一个集合类

public class MyCollection : ICollection<MyClass>
{
private List<MyClass> _itemList = new List<MyClass>();

public void SetAsDefault(MyClass item)
{
// Make sure no other items are default.
_itemList.ForEach(x => x.IsDefault = false);

// Set specified item as default.
_itemList.Find(x => x.Equals(item)).IsDefault = true;
}
}

我想确保只有 MyCollection 中的单个项目被标记为默认值,同时能够直接在 MyClass 上检查特定实例是否是默认值。将 MyClass.IsDefault 的 setter 标记为 internal 程序集外的开发人员无法设置 IsDefault。但是,就我而言,我想避免错误设置 IsDefault 属性的开发人员可以访问程序集内部,因此使用 internal 是不够的。

这个难题有什么巧妙的解决方案吗?我在这里完全不知所措......

最佳答案

我认为这真的很难完全正确。由于其他所有开发人员都可以将属性设置在其他地方,因此我会尝试解决这个问题。

您可以删除 Objects 属性并使其成为集合的属性。由于有人可以检索 MyClass 实例并以任何方式设置它,因此您可以向 MyCollection 添加一个方法来检查 MyClass 实例是否是该集合中的默认实例。

否则我看不出有什么好方法可以真正禁止你想要的东西。

关于c# - 在集合中的对象上设置只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39873462/

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