2013-04-10 66 views
1

我正在编写一个调用一些erp类/函数(erp已经过时并且没有任何支持的程序)的程序。我在定义“对象”时遇到了困难,并希望在这方面提供一些帮助。在此先感谢C#对象类型 - 对象引用未设置为对象的实例

我有一个类typeUDDBTble(定义如下)。

我的编码是。

typeUDDBTbl UDDB = new typeUDDBTbl(); 
UDDB.name = "xxxx"; 
UDDB.Rec = new typeRec[1]; 
// Edited, incorrect code 
// UDDB[0].Items = new typeFld[1]; 
UDDB.Rec[0].Items = new typeFld[1]; 

Items是一个对象数组。我试着用new Object[1],或其他type(typeFld),但都得到

对象引用不设置到对象

任何想法如何,我可以解决这个问题的一个实例?

定义:

public partial class typeUDDBTbl : object, System.ComponentModel.INotifyPropertyChanged 
{ 
    private typeRec[] recField; 
    private string nameField; 

    /// <remarks/> 
    [System.Xml.Serialization.XmlElementAttribute("Rec", Order = 0)] 
    public typeRec[] Rec 
    { 
     get 
     { 
      return this.recField; 
     } 
     set 
     { 
      this.recField = value; 
      this.RaisePropertyChanged("Rec"); 
     } 
    } 

    /// <remarks/> 
    [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")] 
    public string name 
    { 
     get 
     { 
      return this.nameField; 
     } 
     set 
     { 
      this.nameField = value; 
      this.RaisePropertyChanged("name"); 
     } 
    } 

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 

    protected void RaisePropertyChanged(string propertyName) 
    { 
     System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 
     if ((propertyChanged != null)) 
     { 
      propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

public partial class typeRec : object, System.ComponentModel.INotifyPropertyChanged 
{ 

    private object[] itemsField; 

    private string dummyField; 

    /// <remarks/> 
    [System.Xml.Serialization.XmlElementAttribute("Fld", typeof(typeFld), Order = 0)] 
    [System.Xml.Serialization.XmlElementAttribute("LangFld", typeof(typeLangFld), Order = 0)] 
    public object[] Items 
    { 
     get 
     { 
      return this.itemsField; 
     } 
     set 
     { 
      this.itemsField = value; 
      this.RaisePropertyChanged("Items"); 
     } 
    } 

    /// <remarks/> 
    [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")] 
    public string dummy 
    { 
     get 
     { 
      return this.dummyField; 
     } 
     set 
     { 
      this.dummyField = value; 
      this.RaisePropertyChanged("dummy"); 
     } 
    } 

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 

    protected void RaisePropertyChanged(string propertyName) 
    { 
     System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 
     if ((propertyChanged != null)) 
     { 
      propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 

public partial class typeFld : object, System.ComponentModel.INotifyPropertyChanged 
{ 

    private string nameField; 

    private string valueField; 

    /// <remarks/> 
    [System.Xml.Serialization.XmlAttributeAttribute(DataType = "token")] 
    public string name 
    { 
     get 
     { 
      return this.nameField; 
     } 
     set 
     { 
      this.nameField = value; 
      this.RaisePropertyChanged("name"); 
     } 
    } 

    /// <remarks/> 
    [System.Xml.Serialization.XmlTextAttribute()] 
    public string Value 
    { 
     get 
     { 
      return this.valueField; 
     } 
     set 
     { 
      this.valueField = value; 
      this.RaisePropertyChanged("Value"); 
     } 
    } 

回答

0

您的typeUDDBTble不包含索引器,因此您尝试使用方括号访问其对象时无效。

我想你的意思是:

UDDB.Rec[0].Items = ... 

此外,你将有除非你想另一个异常初始化第一个单元格中Rec

UDDB.Rec[0] = new typeRec(); 
UDDB.Rec[0].Items = new object[1] 
+0

谢谢,我错过了UDDB.Rec [0] = new typeRec();感谢您的帮助 – Glen 2013-04-10 04:05:09

+0

不客气。 – 2013-04-10 11:47:08

0

这是不正确的:

UDDB[0].Items = new typeFld[1]; 

typeUDDBTbl类型,它不具有索引方法的。

它似乎也没有名为Items的属性。

+0

哎呀,对不起,编码应该是UDDB.Rec [0] .Items – Glen 2013-04-10 03:34:17

+0

@Glen在这种情况下..'Items'是'null'因为你没有初始化它。 – 2013-04-10 03:37:42

相关问题