public override void OnLoad()
{
cls = lookup(Database, name);
int n = allFields.Length;
bool hasTransparentAttribute = cls.GetCustomAttributes(typeof(TransparentPersistenceAttribute), true).Length != 0;
for (int i = n; --i >= 0; )
{
FieldDescriptor fd = allFields[i];
fd.Load();
fd.field = cls.GetField(fd.fieldName, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
if (hasTransparentAttribute && fd.type == FieldType.tpObject && isVolanteInternalType(fd.field.FieldType))
{
fd.recursiveLoading = true;
}
switch (fd.type)
{
case FieldType.tpArrayOfOid:
fd.constructor = GetConstructor(fd.field, "ConstructArray");
break;
case FieldType.tpLink:
fd.constructor = GetConstructor(fd.field, "ConstructLink");
break;
default:
break;
}
}
defaultConstructor = cls.GetConstructor(BindingFlags.Instance | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.DeclaredOnly, null, defaultConstructorProfile, null);
if (defaultConstructor == null && !typeof(ValueType).IsAssignableFrom(cls))
{
throw new DatabaseException(DatabaseException.ErrorCode.DESCRIPTOR_FAILURE, cls);
}
DatabaseImpl s = (DatabaseImpl)Database;
if (!s.classDescMap.ContainsKey(cls))
{
((DatabaseImpl)Database).classDescMap.Add(cls, this);
}
}