1

私はいくつかの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");
        }
    }
4

2 に答える 2

0

これは正しくありません:

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

UDDBtypeUDDBTblは、インデクサー メソッドを持たないタイプです。

というプロパティもないようItemsです。

于 2013-04-10T03:27:53.100 に答える
0

typeUDDBTble にはインデクサーが含まれていないため、角かっこでそのオブジェクトにアクセスしようとすると無効になります。

私はあなたが意味したと思います:

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

Recまた、別の例外が必要でない限り、最初のセルを初期化する必要があります。

UDDB.Rec[0] = new typeRec();
UDDB.Rec[0].Items = new object[1]
于 2013-04-10T03:28:21.293 に答える