Как получить индекс атрибута для использования в функции OracleUdt.GetValue? - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть тонны кода (C #), который использует имя атрибута (строку) для установки и получения некоторых данных для объекта IOracleCustomType в ToCustomObject и FromCustomObject:

Oracle.DataAccess.Types.OracleUdt.SetValue (con, pUdt, "XXXX", this.XXXX);

Эти функции также имеют вариант, который принимает атрибут-индекс (int) вместо атрибута-имени.Из соображений производительности я бы предпочел использовать int-index.Я новичок в C # и не могу найти, как получить этот индекс по имени атрибута.

public class MY_RECORD : IOracleCustomType{

    private string m_NAME;

    [OracleObjectMappingAttribute("NAME")]
    public string NAME {
        get { return this.m_NAME; }
        set { this.m_NAME = value; }
    }

    public virtual void FromCustomObject(Oracle.DataAccess.Client.OracleConnection con, System.IntPtr pUdt) {
        Oracle.DataAccess.Types.OracleUdt.SetValue(con, pUdt, "NAME", this.NAME);
    }

    public virtual void ToCustomObject(Oracle.DataAccess.Client.OracleConnection con, System.IntPtr pUdt) {
        this.NAME = (string)(Oracle.DataAccess.Types.OracleUdt.GetValue(con, pUdt, "NAME"));

        //I need something to get (1 times only) Index of each string-field
        //store it in some place and use instead of "NAME"
        //this.NAME = (string)Oracle.DataAccess.Types.OracleUdt.GetValue(con, pUdt, this._iNAME));
    }
}
...