C# InvokeMember — MissingMethodException: «Метод не найден»

В приложении .NET Core 6 RestAPI я отслеживаю глобальные фондовые биржи и имею экземпляр приведенного ниже класса Exchange с именем «ex».

      public class Exchange
{
    public string CountryCode { get; set; }
    public string Currency { get; set; }
    public string DataSourceCode { get; set; }
    public int DaysHoursId { get; set; }
    public string ExchangeCode { get; set; }
    public string ExchangeName { get; set; }
    public int Id { get; set; }
    public bool IsActive { get; set; }
    public DateTimeOffset LastUpdatedDate { get; set; }
    public string LastUpdatedStatus { get; set; }
    public DateTimeOffset NextUpdateDateTime { get; set; }
    public string Region { get; set; }
    public string Timezone { get; set; }
    public string Type { get; set; }
    public string Url { get; set; }
    public string Website { get; set; }
}

Все поля заполняются ненулевыми данными. В этом случае тело моего вызова почтальона: { "CountryCode": "USA", "Currency": "USD", "DataSourceCode": "IA2", "DaysHoursId": 2, "ExchangeCode": "AMEX" , "ExchangeName": "AMEX",
"IsActive": true, "LastUpdatedDate": "2022-04-24T15:42:28.2533333+00:00", "LastUpdatedStatus": "ОК", "NextUpdateDateTime": "2022-04-24T15:42:28.2533333+00:00", "Регион": "СЕВЕРНАЯ АМЕРИКА", "Часовой пояс": "EST", "Тип": "АКЦИЯ", "URL": "https://www.nyse.com/markets/nyse-american", "Веб-сайт": "www.AMEX.com" }

Используя Reflection, я создаю DataTable из этого объекта со всеми столбцами, кроме «Id», который является первичным ключом Identity в таблице, в которую будут загружаться данные, следующим образом:

       PropertyDescriptorCollection props = TypeDescriptor.GetProperties(ex);
 DataTable dt = new DataTable();
 foreach (PropertyDescriptor p in props)
 {
      if (p.Name != "Id")  // insert into an identity column not allowed.
      { 
           dt.Columns.Add(p.Name, p.PropertyType);
      }
 }

Затем я пытаюсь создать строку в таблице данных dt следующим образом:

      DataRow dr = dt.NewRow();
Type t = ex.GetType();
for (int i = 0; i <= dt.Columns.Count; i++)
{
    t.InvokeMember(dt.Columns[i].ColumnName, System.Reflection.BindingFlags.SetProperty, null, ex, new object[] { dt.Columns[i].ColumnName });
}

... который при выполнении и отслеживании InvokeMember успешно прошел через столбцы CountryCode, Currency и DataSourceCode, но затем, когда он достиг DaysHoursId, выдал «System.MissingMethodException: 'Method MarketApi.Core.Entitites.Exchange.DaysHoursId' исключение не найдено.

Любое понимание того, что я делаю неправильно, будет очень признательно!

0 ответов

Другие вопросы по тегам