public static async Task LoadReferencesAsync <T>(this IDbCommand dbCmd, T instance, CancellationToken token) { var loadRef = new LoadReferencesAsync <T>(dbCmd, instance); foreach (var fieldDef in loadRef.FieldDefs) { dbCmd.Parameters.Clear(); var listInterface = fieldDef.FieldType.GetTypeWithGenericInterfaceOf(typeof(IList <>)); if (listInterface != null) { await loadRef.SetRefFieldList(fieldDef, listInterface.GenericTypeArguments()[0], token); } else { await loadRef.SetRefField(fieldDef, fieldDef.FieldType, token); } } }