C# Datagridview和包含对象的属性

C# Datagridview和包含对象的属性,c#,winforms,datagridview,.net-2.0,C#,Winforms,Datagridview,.net 2.0,我有一个对象的绑定列表。这些对象包含要由databindingview显示的公共属性。不幸的是,我无法获取返回包含对象的字段数据的属性。以下面人为的例子为例: Public Class ChimpDiet { public string favoritefood; } Public Class Chimpanzee { private ChimpDiet diet; [DisplayName("Chimp's favorite food")] public string f

我有一个对象的绑定列表。这些对象包含要由databindingview显示的公共属性。不幸的是,我无法获取返回包含对象的字段数据的属性。以下面人为的例子为例:

Public Class ChimpDiet
{
  public string favoritefood;
}


Public Class Chimpanzee
{
  private ChimpDiet diet;

  [DisplayName("Chimp's favorite food")]
  public string favoritefood
  { get { return diet.favoritefood; } }

  [DisplayName("Chimp's nickname")]
  public string nickname { get; set; }

  public Chimpanzee()
  {
    diet = new ChimpDiet();
  } 
}
当我将黑猩猩的BindingList设置为datagridview的数据源时,属性favoritefood会导致错误弹出:

DataGridView中发生以下异常:
System.Reflection.TargetInvocationException:属性访问器。。。。 引发了以下异常:“对象引用未设置为对象的实例”

确保始终在容器对象的构造函数中创建实例,但这并不能解决问题。有什么建议吗?这是在NET2.0上

p、 数据是由网格显示的,只是这个错误不断弹出,表示引用未设置为实例,即使它显然是。这一定是winforms的问题

更新:将类更改为结构将删除错误。
但我需要它成为一门课。这对我来说毫无意义。

好的,事实证明DataGridView希望包含的对象有一个默认构造函数(没有参数),它初始化它的每个字段数据。我不知道为什么(如果有人能解释一下,请这么做),但我的程序现在正在运行,就是这样。

这是因为您的一个属性正在返回类
的属性。当
DataGridView
试图显示其访问
diet.favoritefood
的值时,不预先初始化它,当
diet
为空时,它抛出异常