sampath1750 Ответов: 1

Читать АЛМ настраиваемые поля данных на C#


Привет,

Используя приведенную ниже ссылку, я читаю данные HP ALM с помощью c#, в ALM некоторые пользовательские поля также есть, я не могу прочитать пользовательские файлы, можете ли Вы нам помочь.


Съемник данных QC с использованием C#[^]3

Спасибо!

Что я уже пробовал:

Используя приведенный ниже код, я могу прочитать код всех полей.

foreach (IBug thisBug in bugL)
                        {
                            dsbug.Tables[0].Rows.Add(thisBug.ID, thisBug.Summary, thisBug.Status, thisBug.AssignedTo, thisBug.DetectedBy, thisBug.ToString(), thisBug.Priority);
}


В сущностях класс IBug имеет следующий код.

[DefaultMember("Field")]
    [Guid("2AF970F7-6CCC-4DFB-AA78-08F689481F94")]
    [TypeLibType(4160)]
    public interface IBug : IBaseFieldExMail
    {
        [DispId(0)]
        dynamic this[string FieldName] { get; set; }
        [DispId(20)]
        string AssignedTo { get; set; }
        [DispId(12)]
        dynamic Attachments { get; }
        [DispId(5)]
        bool AutoPost { get; set; }
        [DispId(23)]
        List ChangeLinks { get; }
        [DispId(19)]
        string DetectedBy { get; set; }
        [DispId(13)]
        bool HasAttachment { get; }
        [DispId(22)]
        bool HasChange { get; }
        [DispId(11)]
        dynamic History { get; }
        [DispId(4)]
        dynamic ID { get; }


Используя foreach (IBug thisBug in bugL), я могу читать все поля, кроме dynamic this[string FieldName]. динамика этого["поле"] имеет настраиваемые поля, мне нужно прочитать это значение динамически.

Как читать ниже сущность в файле класса.
dynamic this[string FieldName]

Patrice T

"я не могу создавать пользовательские файлы"
Можете ли вы сделать это предложение ?

[no name]

Попросите того, кто написал код, помочь вам. Вы, возможно, захотите, чтобы рассмотреть вопрос о публикации описания актуальной проблемы.

sampath1750

Используя foreach (IBug thisBug in bugL), я могу читать все поля, кроме нижеприведенного значения
динамическое это[string FieldName].

Как прочитать динамическое значение этого["поля"] в цикле foreach

1 Ответов

Рейтинг:
0

lw@zi

Во-первых, вы разместили интерфейс, а не код класса. Пожалуйста обновите вопрос с кодом класса.

Во-вторых, "поле", которое вы пытаетесь прочитать, на самом деле является индексатором. Вы можете прочитать об индексаторах здесь:MSDN[^]. Из ссылки:

Цитата:
Индексаторы позволяют индексировать экземпляры класса или структуры точно так же, как массивы. Индексаторы похожи на свойства, за исключением того, что их методы доступа принимают параметры.


Глядя на код, который вы опубликовали, вот что я могу предположить, что может быть сделано в классе:

static class Program
{
    static void Main(string[] args)
    {

        BugClass classObj = new BugClass();

        classObj.Id = 1;
        classObj.Name = "First";

        int firstId = classObj["Id"];
        string firstName = classObj["Name"];

        Console.Read();
    }
}


public interface IBug
{
    dynamic this[string FieldName] { get; set; }

    int Id { get; set; }

    string Name { get; set; }

}

class BugClass:IBug
{

    public dynamic this[string FieldName]
    {
        get
        {
            return this.GetType().GetProperty(FieldName).GetValue(this);
        }
        set
        {
            this.GetType().GetProperty(FieldName).SetValue(this, value);
        }
    }

    public int Id
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }
}


Здесь, dynamic this сама по себе она на самом деле ничего не держит. Это просто альтернативный способ поиграть со свойствами класса. Пока вы читаете все значения из свойств, ваш код должен быть в порядке.