防止C#中的列表更改

537*_*mfb 4 .net c# linked-list readonly

我有一个对象的链接列表(可以更改为任何其他集合类型,只要它保持输入顺序)在程序集A(DLL)中.

当程序集B从包含所述LinkedList的类创建一个对象时,它会分配一个方法来报告一些信息.该方法采用的一个参数是LinkedList.

现在我希望程序集B中的这个方法能够从LinkedList读取(遍历它并根据它的内容做事),但是我需要阻止该方法更改List中的数据.

虽然我现在正在使用Assembly A,但是当它公开时,我需要防止数据从我的程序集外部更改,以便使用该库的第三方不会对程序集内的结果产生影响.

基本上,我希望"密封"将LinkedList从程序集A带到程序集B的参数

我有意义吗?

aba*_*hev 5

new List<T>(linkedList).AsReadOnly();
Run Code Online (Sandbox Code Playgroud)


das*_*ght 5

如果您可以从 更改LinkedList<T>List<T>,则可以使用该AsReadOnly()方法生成列表的只读包装器。包装器是轻量级的,不需要复制,并立即反映底层集合的更改:

List<MyClass> originalList = ...
IList<MyClass> readOnly = originalList.AsReadOnly();
Run Code Online (Sandbox Code Playgroud)