c# - 阻止 List.Add() 方法

标签 c# .net

我有一个包含私有(private)列表的类。我创建了一个 getter 和一个方法来将元素添加到列表中:

public class Test{

    private List<T> myList;
    public List<T> MyList
    {
        get { return myList; }
    }

    public Test()
    {
         myList = new List<T>();
    }

    public void AddElements(T element)
    {
         // Do dome stuff, subscribe to an event of T
         myList.Add(element);
    }
}

由于每次将一个元素添加到我的列表中我都想做更多的事情,我不希望在代码的某些部分有人直接添加一个元素:

Test test = new Test();

// Wrong
test.MyList.Add(element);

// Right
test.AddElements(element);

我考虑过创建一个实现 IList 接口(interface)并覆盖 Add() 方法的新类,但我想知道是否有更简单/优雅的方法来“阻止”此 Add() 方法。

最佳答案

如果您至少使用 .NET 4.5,请返回 IReadOnlyList<T> .

public class Test{

    private List<T> myList;
    public IReadOnlyList<T> MyList
    {
        get { return myList; }
    }

    public Test()
    {
         myList = new List<T>();
    }

    public void AddElements(T element)
    {
         // Do dome stuff, subscribe to an event of T
         myList.Add(element);
    }
}

关于c# - 阻止 List.Add() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35651459/

相关文章:

.net - 在 Linux 上构建面向 .NET Framework 的 NuGet 包

c# - 以编程方式更改播放设备 xp

c# - 使用 LDAP 连接到 Active Directory 的连接字符串

c# - IEnumerable<T> 线程安全?

c# - 在 Sharepoint 2010 中发送带附件的电子邮件

c# - 在windows窗体中显示透明gif文件

c# - 在 C# .Net 中使用委托(delegate),当我用完 .Net 线程池中的线程时会发生什么情况?

c# - C# 中的 && 运算符重载和赋值 - 说明?

c# - WF4RC,WriteLine 事件在分配给 TextWriter 的 StringWriter 上引发错误

c# - 为什么 BufferedGraphics 绘制速度慢?