C# 将列表作为DataGridView公开是否安全;什么是数据源?
我正在创建一个C#类库,它从套接字读取数据并将一些数据存储在列表中。在执行期间,此列表将每秒更改一次以上 需要将此列表作为winforms应用程序的C# 将列表作为DataGridView公开是否安全;什么是数据源?,c#,winforms,datagridview,datatable,bindingsource,C#,Winforms,Datagridview,Datatable,Bindingsource,我正在创建一个C#类库,它从套接字读取数据并将一些数据存储在列表中。在执行期间,此列表将每秒更改一次以上 需要将此列表作为winforms应用程序的dataGridView的内容,但我想知道如何将其从库中公开出来 在类库中将列表声明为公共是否安全,如: public class THRManager { public List <GaugeItem> outSource; ... 这安全吗?如果没有,最好的方法是什么 谢谢 =====================
dataGridView
的内容,但我想知道如何将其从库中公开出来
在类库中将列表声明为公共是否安全,如:
public class THRManager
{
public List <GaugeItem> outSource;
...
这安全吗?如果没有,最好的方法是什么
谢谢
=========================编辑
我应该使用DataTable还是BindingSource?在发布内部集合时,这是一个更安全的选项
private List<GaugeItem> outSource;
public ReadOnlyCollection<GaugeItem> OutSource
{
get { return new ReadOnlyCollection<GaugeItem>(outSource); }
}
私有列表外包;
公共只读集合外包
{
获取{返回新的只读集合(外包);}
}
发布内部收藏时,这是一个更安全的选项
private List<GaugeItem> outSource;
public ReadOnlyCollection<GaugeItem> OutSource
{
get { return new ReadOnlyCollection<GaugeItem>(outSource); }
}
私有列表外包;
公共只读集合外包
{
获取{返回新的只读集合(外包);}
}
发布内部收藏时,这是一个更安全的选项
private List<GaugeItem> outSource;
public ReadOnlyCollection<GaugeItem> OutSource
{
get { return new ReadOnlyCollection<GaugeItem>(outSource); }
}
私有列表外包;
公共只读集合外包
{
获取{返回新的只读集合(外包);}
}
发布内部收藏时,这是一个更安全的选项
private List<GaugeItem> outSource;
public ReadOnlyCollection<GaugeItem> OutSource
{
get { return new ReadOnlyCollection<GaugeItem>(outSource); }
}
私有列表外包;
公共只读集合外包
{
获取{返回新的只读集合(外包);}
}
使用一个ReadOnlyCollection
,但在构造函数中或任何需要的地方创建一次,以避免每次访问它时都执行新的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; }
}
}
公共类管理员
{
私人名单外包;
私人只读收集外包;
公共管理员()
{
外包=新列表();
outsourceradonly=新的只读集合(outSource);
}
公共只读集合外包
{
获取{return outsourceradonly;}
}
}
希望代码不会出现语法错误:)使用一个
ReadOnlyCollection
,但在构造函数中或任何需要的地方创建一次,以避免每次访问它时都执行新建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; }
}
}
公共类管理员
{
私人名单外包;
私人只读收集外包;
公共管理员()
{
外包=新列表();
outsourceradonly=新的只读集合(outSource);
}
公共只读集合外包
{
获取{return outsourceradonly;}
}
}
希望代码不会出现语法错误:)使用一个
ReadOnlyCollection
,但在构造函数中或任何需要的地方创建一次,以避免每次访问它时都执行新建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; }
}
}
公共类管理员
{
私人名单外包;
私人只读收集外包;
公共管理员()
{
外包=新列表();
outsourceradonly=新的只读集合(outSource);
}
公共只读集合外包
{
获取{return outsourceradonly;}
}
}
希望代码不会出现语法错误:)使用一个
ReadOnlyCollection
,但在构造函数中或任何需要的地方创建一次,以避免每次访问它时都执行新建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; }
}
}
公共类管理员
{
私人名单外包;
私人只读收集外包;
公共管理员()
{
外包=新列表();
outsourceradonly=新的只读集合(outSource);
}
公共只读集合外包
{
获取{return outsourceradonly;}
}
}
希望代码不会出现语法错误:)BindingSource涉及到什么?我将其编辑为一个列表,但基本上这个问题并没有变化(可能更有意义),听起来似乎唯一允许更改列表的应该是Thrmager,所以最好通过属性将列表发布为ReadOnlyList。不需要DataTable。如果外包将绑定到多个控件,那么将BindingSource放在两个控件之间可能会有所帮助。BindingSource涉及到什么?我编辑了一个列表,但基本上这个问题没有变化(可能更有意义)听起来唯一允许更改列表的应该是THRManager,因此最好通过属性将列表发布为ReadOnlyList。不需要DataTable。如果外包将绑定到多个控件,那么将BindingSource放在两个控件之间可能会有所帮助。BindingSource涉及到什么?我编辑了一个列表,但基本上这个问题没有变化(可能更有意义)听起来唯一允许更改列表的应该是THRManager,因此最好通过属性将列表发布为ReadOnlyList。不需要DataTable。如果外包将绑定到多个控件,那么将BindingSource放在两个控件之间可能会有所帮助。BindingSource涉及到什么?我编辑了一个列表,但基本上这个问题没有变化(可能更有意义)听起来唯一允许更改列表的应该是THRManager,因此最好通过属性将列表发布为ReadOnlyList。不需要DataTable。如果外包将绑定到多个控件,将BindingSource放在两者之间可能会有所帮助。抱歉,我再次编辑了问题,因为我是在字典中开始提问的。对不起,我再次编辑了问题,因为我是在字典中开始提问的。对不起,我再次编辑了该问题,因为我是在字典中开始提问的。对不起,我再次编辑了该问题,因为我是在字典中开始提问的。每次发生更改时,我是否需要重新绑定数据网格?@Pizzaboy抱歉。。。很晚才回答。。。不,您不必再次绑定。每次发生更改时,我是否需要重新绑定数据网格?@Pizzaboy抱歉。。。很晚才回答。。。没有