C#对象类型 - 未将对象引用设置为对象的实例

时间:2013-04-10 03:20:21

标签: c# arrays object

我正在编写一个调用某些erp类/函数的程序(erp已经过时,并且没有任何支持)。我无法定义“对象”,并希望在这方面提供一些帮助。提前谢谢

我有一个班级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");
        }
    }

2 个答案:

答案 0 :(得分:0)

这是不正确的:

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

UDDB的类型为typeUDDBTbl,没有索引器方法。

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

答案 1 :(得分:0)

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

我想你的意思是:

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

此外,除非您需要其他例外,否则您必须初始化Rec中的第一个单元格。

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