Я в предидущем посте налажал и тело взял не от того MapInternal:
internal static void MapInternal(
IMapDataSource source,
object sourceData,
IMapDataReceiver receiver,
object receiverData)
{
if (receiverData is ISupportInitialize)
((ISupportInitialize)receiverData).BeginInit();
IMapGettable mg = sourceData as IMapGettable;
if (receiverData is IMapSettable)
{
IMapSettable mapReceiver = (IMapSettable)receiverData;
for (int i = 0; i < source.FieldCount; i++)
{
string name = source.GetFieldName(i);
object o = source.GetFieldValue(i, sourceData);
if (mg != null)
{
mg.GetField(name, ref o);
}
if (mapReceiver.SetField(name, o) == false)
{
int idx = receiver.GetOrdinal(name);
if (idx >= 0)
{
receiver.SetFieldValue(idx, name, receiverData, o);
}
}
}
}
else
{
for (int i = 0; i < source.FieldCount; i++)
{
string name = source.GetFieldName(i);
// -----------------------------------
if (name.Length > 0)
{
int idx = receiver.GetOrdinal(name);
if (idx >= 0)
{
object o = source.GetFieldValue(i, sourceData);
if (mg != null)
{
mg.GetField(name, ref o);
}
receiver.SetFieldValue(idx, name, receiverData, o);
}
}
}
}
if (receiverData is ISupportInitialize)
((ISupportInitialize)receiverData).EndInit();
}
... << RSDN@Home 1.1.4 beta 3 rev. 185>>