将列表公开用作DataGridView';是否安全;的数据源
本文关键字:是否 安全 数据源 DataGridView 列表 | 更新日期: 2024-07-27 19:35:01
我正在创建一个C#类库,它从套接字读取数据并将一些数据存储在列表中。在执行期间,此列表将每秒更改一次。
需要将此列表作为winforms应用程序的dataGridView
的内容,但我想知道如何将其从库中公开。
在classLibrary中声明列表为公共列表是否安全,如:
public class THRManager
{
public List <GaugeItem> outSource;
...
然后在WinForm端:
public TMRMainForm()
{
THRManager thrC = new THRManager();
dataGridView1.DataSource = thrC.outSource;
...
这安全吗?如果没有,最好的方法是什么?
Thx!
===============编辑
我应该使用DataTable还是BindingSource?
使用ReadOnlyCollection
,但在构造函数中或其他需要它们的地方创建一次,以免每次访问都执行new ReadOnlyCollection...
。
public class THRManager
{
private List<GaugeItem> outsource;
private ReadOnlyCollection<GaugeItem> outSourceReadOnly;
public THRManager()
{
outSource = new List<GaugeItem>();
outSourceReadOnly = new ReadOnlyCollection<GaugeItem>(outSource);
}
public ReadOnlyCollection<GaugeItem> OutSource
{
get { return outSourceReadOnly; }
}
}
希望代码在没有语法错误的情况下工作:)
发布内部集合时,这是一个更安全的选项。
private List<GaugeItem> outSource;
public ReadOnlyCollection<GaugeItem> OutSource
{
get { return new ReadOnlyCollection<GaugeItem>(outSource); }
}