【问题标题】:Binding a List of internal object to DataGridView将内部对象列表绑定到 DataGridView
【发布时间】:2016-07-15 13:57:30
【问题描述】:

我需要绑定一个类的对象列表,我需要将其设为internal,因为它永远不会在此 .cs 文件之外使用。

internal class DataGridViewItems
{
    internal string Id{ get; set; }
    internal string Description{ get; set; }
    internal double Value{ get; set; }
    internal string Reference {get;set;}
};

有没有办法将它绑定到DataGridView?只有当我把所有东西都放到Public

【问题讨论】:

  • 简单:您不需要需要它是internal。你需要它是public
  • 你介意解释一下吗?为什么需要公开?
  • 您需要将其公开,因为“它只有在我将所有内容都公开时才有效”。因此,如果你需要它工作,你需要它是公开的。
  • 好吧,我猜。那么……datagridview 似乎无法与内部修饰符一起使用是否有原因?
  • 请注意,您可以将 class 设为内部而 properties 公开 - 这样DataGridView 仍然可以使用反射来获取公共属性并绑定到那些。

标签: c# datagridview access-modifiers


【解决方案1】:

有没有办法将它绑定到 DataGridView?

当然 - 将设为internal,但将属性设为public。这样DataGridView 在创建/绑定列时仍会通过反射找到公共属性,但在程序集之外无法直接访问该类。

我需要是内部的,因为它永远不会在这个 .cs 文件之外使用。

注意internal 使类对同一程序集 中的所有类型可见,而不仅仅是该CS 文件。听起来您想要的是创建/使用它的类私有的类:

public class MyView
{
    private class DataGridViewItems
    {
        public string Id{ get; set; }
        public string Description{ get; set; }
        public double Value{ get; set; }
        public string Reference {get;set;}
    };
}

【讨论】:

  • 从未使用过设置属性访问器“。虽然我不认为这是个问题。作为 Private 工作的类,但 Resharper 给了我关于使用“自动实现获取属性的建议”
猜你喜欢
  • 2014-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
相关资源
最近更新 更多