Теперь показанные далее методы могут быть реализованы обобщенным образом, используя полученную посредством рефлексии информацию:

public int FieldCount => _propertyInfos.Length;

public object GetValue(int i)

  => _propertyInfos

      .First(x=>x.Name.Equals(_nameDictionary[i],

                              StringComparison.OrdinalIgnoreCase))

      .GetValue(Records[_currentIndex]);

Для справки ниже приведены остальные методы, которые должны присутствовать (но не реализованы):

public string GetName(int i) => throw new NotImplementedException();

public int GetOrdinal(string name) => throw new NotImplementedException();

public string GetDataTypeName(int i) => throw new NotImplementedException();

public Type GetFieldType(int i) => throw new NotImplementedException();

public int GetValues(object[] values) => throw new NotImplementedException();

public bool GetBoolean(int i) => throw new NotImplementedException();

public byte GetByte(int i) => throw new NotImplementedException();

public long GetBytes(int i, long fieldOffset, byte[] buffer,

  int bufferoffset, int length)

  => throw new NotImplementedException();

public char GetChar(int i) => throw new NotImplementedException();

public long GetChars(int i, long fieldoffset, char[] buffer,

   int bufferoffset, int length)

   => throw new NotImplementedException();

public Guid GetGuid(int i) => throw new NotImplementedException();

public short GetInt16(int i) => throw new NotImplementedException();

public int GetInt32(int i) => throw new NotImplementedException();

public long GetInt64(int i) => throw new NotImplementedException();

public float GetFloat(int i) => throw new NotImplementedException();

public double GetDouble(int i)  => throw new NotImplementedException();

public string GetString(int i) => throw new NotImplementedException();

public decimal GetDecimal(int i) => throw new NotImplementedException();

public DateTime GetDateTime(int i) => throw new NotImplementedException();

public IDataReader GetData(int i) => throw new NotImplementedException();

public bool IsDBNull(int i) => throw new NotImplementedException();

object IDataRecord.this[int i] => throw new NotImplementedException();

object IDataRecord.this[string name] => throw new NotImplementedException();

public void Close() => throw new NotImplementedException();

public DataTable GetSchemaTable() => throw new NotImplementedException();

public bool NextResult() => throw new NotImplementedException();

public int Depth { get; }

public bool IsClosed { get; }

public int RecordsAffected { get; }

<p id="AutBody_Root872"><strong>Выполнение массового копирования</strong></p>

Добавьте в папку BulkImport новый файл открытого статического класса по имени ProcessBulkImport.cs. Поместите в начало файла следующие операторы using:

using System;

Перейти на страницу:

Похожие книги