gpt4 book ai didi

c# - 最佳实践 : How to expose a read-only ICollection

转载 作者:可可西里 更新时间:2023-11-01 09:01:42 25 4
gpt4 key购买 nike

我有一个 ICollection<T>称为 foos在我想公开为只读的类中(参见 this question )。我看到接口(interface)定义了一个属性 .IsReadOnly ,这似乎是合适的......我的问题是:我如何让类(class)的消费者明白 foos是只读的?

我不想依赖他们记住查询 .IsReadOnly在尝试未实现的方法之前,例如 .Add() .理想情况下,我想公开 foos作为 ReadOnlyCollection<T> , 但它没有实现 IList<T> .我应该公开 foo 吗?通过一个名为的方法,例如 GetReadOnlyFooCollection而不是通过属性(property)?如果是这样,这不会让那些期待 ReadOnlyCollection<T> 的人感到困惑吗? ?

这是 C# 2.0,所以像 ToList() 这样的扩展方法不可用...

最佳答案

您可以像这样将“foos”设为 ReadOnlyCollection:

ReadOnlyCollection<T> readOnlyCollection = foos.ToList<T>().AsReadOnly();

然后您可以将其公开为您的类的属性。

编辑:

    class FooContainer
{
private ICollection<Foo> foos;
public ReadOnlyCollection<Foo> ReadOnlyFoos { get { return foos.ToList<Foo>().AsReadOnly();} }

}

注意:您应该记住,一旦您获得 ReadOnlyFoos 集合,就不再与您的 foos ICollection “同步”。查看thread you referenced .

关于c# - 最佳实践 : How to expose a read-only ICollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/285323/

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