У меня есть тонны кода (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));
}
}