public ObjectRecord([NotNull] RecordSetDefinition recordSetDefinition, [NotNull] params object[] columnValues)
{
if (recordSetDefinition == null) throw new ArgumentNullException("recordSetDefinition");
if (columnValues == null) throw new ArgumentNullException("columnValues");
int length = columnValues.Length;
int columns = recordSetDefinition.FieldCount;
if (length > columns)
throw new ArgumentException(
string.Format(
"The number of values specified '{0}' cannot exceed the number of expected columns '{1}'.",
length,
columns),
"columnValues");
_recordSetDefinition = recordSetDefinition;
_columnValues = new object[recordSetDefinition.FieldCount];
// Import values or set to null.
for (int i = 0; i < columns; i++)
SetValue(i, i < length ? columnValues[i] : _recordSetDefinition[i].DefaultValue);
}