我正在创建一个C#类库,它从套接字读取数据并将一些数据存储在列表中。在执行期间,此列表将每秒更改一次。
需要此列表作为winforms应用程序的dataGridView
的内容,但我想知道如何将其从我的库中公开。
在classLibrary中将List声明为public是否安全,如:
public class THRManager
{
public List <GaugeItem> outSource;
...
然后在WinForm方面:
public TMRMainForm()
{
THRManager thrC = new THRManager();
dataGridView1.DataSource = thrC.outSource;
...
这样安全吗?如果没有,最好的方法是什么?
THX!
================== EDIT
我应该使用DataTable还是BindingSource?
答案 0 :(得分:2)
使用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; }
}
}
希望代码没有语法错误:)
答案 1 :(得分:1)
发布内部集合时,这是一个更安全的选项。
private List<GaugeItem> outSource;
public ReadOnlyCollection<GaugeItem> OutSource
{
get { return new ReadOnlyCollection<GaugeItem>(outSource); }
}