ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler itemSpecialized) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _type = type; _itemsHandler = itemSpecialized; }
public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory) { var fieldHandler = fieldHandlerFactory.CreateFromType(pi.PropertyType, FieldHandlerOptions.None); if (fieldHandler == null) throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName)); var a = pi.GetCustomAttribute<PersistedNameAttribute>(); return new TableFieldInfo(a != null ? a.Name : pi.Name, fieldHandler); }
public PropertyInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory) { _name = reader.ReadString(); var resultFieldHandlerName = reader.ReadString(); _fieldHandler = fieldHandlerFactory.CreateFromName(resultFieldHandlerName, reader.ReadByteArray(), FieldHandlerOptions.None); }
static bool IsMethodSupported(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory) { var syncReturnType = method.ReturnType.UnwrapTask(); if (syncReturnType != typeof(void)) { if (!fieldHandlerFactory.TypeSupported(syncReturnType)) { return(false); } } foreach (var parameter in method.GetParameters()) { if (parameter.IsOptional) { return(false); } if (parameter.IsOut) { return(false); } if (parameter.IsRetval) { return(false); } if (!fieldHandlerFactory.TypeSupported(parameter.ParameterType)) { return(false); } } return(true); }
ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler itemSpecialized) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _type = type; _itemsHandler = itemSpecialized; }
public static IFieldHandler CreateFromReader(this IFieldHandlerFactory factory, AbstractBufferedReader reader, FieldHandlerOptions options) { var handlerName = reader.ReadString(); var handlerConfiguration = reader.ReadByteArray(); return(factory.CreateFromName(handlerName, handlerConfiguration, options)); }
DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler keySpecialized, IFieldHandler valueSpecialized) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _type = type; _keysHandler = keySpecialized; _valuesHandler = valueSpecialized; }
DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type, IFieldHandler keySpecialized, IFieldHandler valueSpecialized) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _type = type; _keysHandler = keySpecialized; _valuesHandler = valueSpecialized; }
public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, byte[] configuration) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _configuration = configuration; var reader = new ByteArrayReader(configuration); _itemsHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None); }
public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, byte[] configuration) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _configuration = configuration; var reader = new ByteArrayReader(configuration); _itemsHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None); }
ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type, IFieldHandler itemSpecialized) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertGenerator = typeConvertGenerator; _type = type; _isSet = type.InheritsOrImplements(typeof(ISet <>)); _itemsHandler = itemSpecialized; Configuration = Array.Empty <byte>(); }
public NullableFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, byte[] configuration) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; Configuration = configuration; var reader = new SpanReader(configuration); _itemHandler = _fieldHandlerFactory.CreateFromReader(ref reader, FieldHandlerOptions.None); }
internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName) { var name = reader.ReadString(); var handlerName = reader.ReadString(); var configuration = reader.ReadByteArray(); var fieldHandler = fieldHandlerFactory.CreateFromName(handlerName, configuration, FieldHandlerOptions.None); if (fieldHandler == null) throw new BTDBException(string.Format("FieldHandlerFactory did not created handler {0} in {1}.{2}", handlerName, tableName, name)); return new TableFieldInfo(name, fieldHandler); }
DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type, IFieldHandler keySpecialized, IFieldHandler valueSpecialized) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertGenerator = typeConvertGenerator; _type = type; _keysHandler = keySpecialized; _valuesHandler = valueSpecialized; Configuration = Array.Empty <byte>(); }
public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _type = type; _itemsHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None); var writer = new ByteBufferWriter(); writer.WriteFieldHandler(_itemsHandler); _configuration = writer.Data.ToByteArray(); }
internal static TableVersionInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName) { var fieldCount = reader.ReadVUInt32(); var fieldInfos = new TableFieldInfo[fieldCount]; for (int i = 0; i < fieldCount; i++) { fieldInfos[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, tableName, FieldHandlerOptions.None); } return new TableVersionInfo(fieldInfos); }
public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory, Type clientType) { var fieldHandler = fieldHandlerFactory.CreateFromProperty(tableName, clientType, pi); if (fieldHandler == null) { throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName)); } return(new TableFieldInfo(pi.Name, fieldHandler)); }
public DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, byte[] configuration) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertGenerator = typeConvertGenerator; Configuration = configuration; var reader = new ByteArrayReader(configuration); _keysHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None); _valuesHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None); }
ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration, int configurationId, IFieldHandler specializedKeyHandler, IFieldHandler specializedValueHandler) { _odb = odb; _fieldHandlerFactory = odb.FieldHandlerFactory; _typeConvertorGenerator = odb.TypeConvertorGenerator; _configuration = configuration; _keysHandler = specializedKeyHandler; _valuesHandler = specializedValueHandler; CreateConfiguration(); }
ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration, int configurationId, IFieldHandler specializedKeyHandler, IFieldHandler specializedValueHandler) { _odb = odb; _fieldHandlerFactory = odb.FieldHandlerFactory; _typeConvertorGenerator = odb.TypeConvertorGenerator; _configuration = configuration; _keysHandler = specializedKeyHandler; _valuesHandler = specializedValueHandler; CreateConfiguration(); }
internal static TableVersionInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName) { var fieldCount = reader.ReadVUInt32(); var fieldInfos = new TableFieldInfo[fieldCount]; for (int i = 0; i < fieldCount; i++) { fieldInfos[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, tableName); } return(new TableVersionInfo(fieldInfos)); }
public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _type = type; _itemsHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None); var writer = new ByteBufferWriter(); writer.WriteFieldHandler(_itemsHandler); _configuration = writer.Data.ToByteArray(); }
internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName, FieldHandlerOptions handlerOptions) { var name = reader.ReadString(); var handlerName = reader.ReadString(); var configuration = reader.ReadByteArray(); var fieldHandler = fieldHandlerFactory.CreateFromName(handlerName, configuration, handlerOptions); if (fieldHandler == null) throw new BTDBException( $"FieldHandlerFactory did not created handler {handlerName} in {tableName}.{name}"); return new TableFieldInfo(name, fieldHandler); }
public ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration) { _odb = odb; _fieldHandlerFactory = odb.FieldHandlerFactory; _typeConvertorGenerator = odb.TypeConvertorGenerator; _configuration = configuration; var reader = new ByteArrayReader(configuration); _keysHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream); _valuesHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None); CreateConfiguration(); }
internal TableFieldInfo Resolve(IFieldHandlerFactory fieldHandlerFactory) { var fieldHandler = fieldHandlerFactory.CreateFromName(_handlerName, _configuration, _handlerOptions); if (fieldHandler == null) { throw new BTDBException( $"FieldHandlerFactory did not created handler {_handlerName} in {_tableName}.{_name}"); } return(Create(_name, fieldHandler)); }
internal static TableVersionInfo Load(ref SpanReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName) { var fieldCount = reader.ReadVUInt32(); var fieldInfos = new TableFieldInfo[fieldCount]; for (var i = 0; i < fieldCount; i++) { fieldInfos[i] = TableFieldInfo.Load(ref reader, fieldHandlerFactory, tableName, FieldHandlerOptions.None); } return(new TableVersionInfo(fieldInfos)); }
public ODBSetFieldHandler(IObjectDB odb, Type type, IFieldHandlerFactory fieldHandlerFactory) { _odb = odb; _typeConvertGenerator = odb.TypeConvertorGenerator; _type = type; _keysHandler = fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream); var writer = new ByteBufferWriter(); writer.WriteFieldHandler(_keysHandler); _configuration = writer.Data.ToByteArray(); CreateConfiguration(); }
public ODBDictionaryFieldHandler(IObjectDB odb, byte[] configuration) { _odb = odb; _fieldHandlerFactory = odb.FieldHandlerFactory; _typeConvertorGenerator = odb.TypeConvertorGenerator; _configuration = configuration; var reader = new ByteArrayReader(configuration); _keysHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream); _valuesHandler = _fieldHandlerFactory.CreateFromReader(reader, FieldHandlerOptions.None); CreateConfiguration(); }
public ListFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertGenerator = typeConvertGenerator; _type = type; _isSet = type.InheritsOrImplements(typeof(ISet <>)); _itemsHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None); var writer = new SpanWriter(); writer.WriteFieldHandler(_itemsHandler); Configuration = writer.GetSpan().ToArray(); }
public DictionaryFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertGenerator, Type type) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertGenerator = typeConvertGenerator; _type = type; _keysHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None); _valuesHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[1], FieldHandlerOptions.None); var writer = new SpanWriter(); writer.WriteFieldHandler(_keysHandler); writer.WriteFieldHandler(_valuesHandler); Configuration = writer.GetSpan().ToArray(); }
internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName) { var name = reader.ReadString(); var handlerName = reader.ReadString(); var configuration = reader.ReadByteArray(); var fieldHandler = fieldHandlerFactory.CreateFromName(tableName, name, handlerName, configuration); if (fieldHandler == null) { throw new BTDBException(string.Format("FieldHandlerFactory did not created handler {0} in {1}.{2}", handlerName, tableName, name)); } return(new TableFieldInfo(name, fieldHandler)); }
public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory, FieldHandlerOptions handlerOptions) { var fieldHandler = fieldHandlerFactory.CreateFromType(pi.PropertyType, handlerOptions); if (fieldHandler == null) { throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName)); } var a = pi.GetCustomAttribute <PersistedNameAttribute>(); return(new TableFieldInfo(a != null ? a.Name : pi.Name, fieldHandler)); }
public ODBDictionaryFieldHandler(IObjectDB odb, Type type) { _odb = odb; _fieldHandlerFactory = odb.FieldHandlerFactory; _typeConvertorGenerator = odb.TypeConvertorGenerator; _type = type; _keysHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream); _valuesHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[1], FieldHandlerOptions.None); var writer = new ByteBufferWriter(); writer.WriteFieldHandler(_keysHandler); writer.WriteFieldHandler(_valuesHandler); _configuration = writer.Data.ToByteArray(); CreateConfiguration(); }
public static RelationVersionInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string relationName) { var pkCount = reader.ReadVUInt32(); var primaryKeys = new List <TableFieldInfo>((int)pkCount); for (var i = 0u; i < pkCount; i++) { primaryKeys.Add(TableFieldInfo.Load(reader, fieldHandlerFactory, relationName, FieldHandlerOptions.Orderable)); } var skFieldCount = reader.ReadVUInt32(); var secondaryKeyFields = new TableFieldInfo[skFieldCount]; for (var i = 0; i < skFieldCount; i++) { secondaryKeyFields[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, relationName, FieldHandlerOptions.Orderable); } var skCount = reader.ReadVUInt32(); var secondaryKeys = new Dictionary <uint, SecondaryKeyInfo>((int)skCount); var secondaryKeysNames = new Dictionary <string, uint>((int)skCount); for (var i = 0; i < skCount; i++) { var skIndex = reader.ReadVUInt32(); var info = new SecondaryKeyInfo(); info.Index = reader.ReadVUInt32(); info.Name = reader.ReadString(); var cnt = reader.ReadVUInt32(); info.Fields = new List <FieldId>((int)cnt); for (var j = 0; j < cnt; j++) { var fromPrimary = reader.ReadBool(); var index = reader.ReadVUInt32(); info.Fields.Add(new FieldId(fromPrimary, index)); } secondaryKeys.Add(skIndex, info); secondaryKeysNames.Add(info.Name, skIndex); } var fieldCount = reader.ReadVUInt32(); var fieldInfos = new TableFieldInfo[fieldCount]; for (int i = 0; i < fieldCount; i++) { fieldInfos[i] = TableFieldInfo.Load(reader, fieldHandlerFactory, relationName, FieldHandlerOptions.None); } return(new RelationVersionInfo(primaryKeys, secondaryKeys, secondaryKeysNames, fieldInfos)); }
internal static TableFieldInfo Load(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory, string tableName, FieldHandlerOptions handlerOptions) { var name = reader.ReadString(); var handlerName = reader.ReadString(); var configuration = reader.ReadByteArray(); var fieldHandler = fieldHandlerFactory.CreateFromName(handlerName !, configuration, handlerOptions); if (fieldHandler == null) { throw new BTDBException( $"FieldHandlerFactory did not created handler {handlerName} in {tableName}.{name}"); } return(new TableFieldInfo(name !, fieldHandler)); }
public void ResolveFieldHandlers(IFieldHandlerFactory fieldHandlerFactory) { for (var i = 0; i < _primaryKeyFields.Count; i++) { _primaryKeyFields[i] = ((UnresolvedTableFieldInfo)_primaryKeyFields[i]).Resolve(fieldHandlerFactory); } for (var i = 0; i < _secondaryKeyFields.Count; i++) { _secondaryKeyFields[i] = ((UnresolvedTableFieldInfo)_secondaryKeyFields[i]).Resolve(fieldHandlerFactory); } for (var i = 0; i < _fields.Length; i++) { _fields[i] = ((UnresolvedTableFieldInfo)_fields[i]).Resolve(fieldHandlerFactory); } }
public NullableFieldHandler(IFieldHandlerFactory fieldHandlerFactory, ITypeConvertorGenerator typeConvertorGenerator, Type type) { _fieldHandlerFactory = fieldHandlerFactory; _typeConvertorGenerator = typeConvertorGenerator; _type = type; _itemHandler = _fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.None); if (_itemHandler.NeedsCtx()) { throw new NotSupportedException("Nullable complex types are not supported."); } var writer = new SpanWriter(); writer.WriteFieldHandler(_itemHandler); Configuration = writer.GetSpan().ToArray(); }
public MethodInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory) { _name = reader.ReadString(); _ifaceName = reader.ReadString(); var resultFieldHandlerName = reader.ReadString(); if (resultFieldHandlerName != null) { _resultFieldHandler = fieldHandlerFactory.CreateFromName(resultFieldHandlerName, reader.ReadByteArray(), FieldHandlerOptions.None); } var parameterCount = reader.ReadVUInt32(); _parameters = new ParameterInf[parameterCount]; for (int i = 0; i < _parameters.Length; i++) { _parameters[i] = new ParameterInf(reader, fieldHandlerFactory); } }
public ODBDictionaryFieldHandler(IObjectDB odb, Type type, IFieldHandlerFactory fieldHandlerFactory) { _odb = odb; _typeConvertGenerator = odb.TypeConvertorGenerator; _type = type; _keysHandler = fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[0], FieldHandlerOptions.Orderable | FieldHandlerOptions.AtEndOfStream); _valuesHandler = fieldHandlerFactory.CreateFromType(type.GetGenericArguments()[1], FieldHandlerOptions.None); var writer = new SpanWriter(); writer.WriteFieldHandler(_keysHandler); writer.WriteFieldHandler(_valuesHandler); _configuration = writer.GetSpan().ToArray(); CreateConfiguration(); }
public TypeInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory) { _type = null; _name = reader.ReadString(); var methodCount = reader.ReadVUInt32(); _methodInfs = new MethodInf[methodCount]; for (int i = 0; i < methodCount; i++) { _methodInfs[i] = new MethodInf(reader, fieldHandlerFactory); } var properyCount = reader.ReadVUInt32(); _propertyInfs = new PropertyInf[properyCount]; for (int i = 0; i < properyCount; i++) { PropertyInfs[i] = new PropertyInf(reader, fieldHandlerFactory); } }
public MethodInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory) { _name = reader.ReadString(); _ifaceName = reader.ReadString(); var resultFieldHandlerName = reader.ReadString(); if (resultFieldHandlerName != null) { _resultFieldHandler = fieldHandlerFactory.CreateFromName(resultFieldHandlerName, reader.ReadByteArray(), FieldHandlerOptions.None); } var parameterCount = reader.ReadVUInt32(); _parameters = new ParameterInf[parameterCount]; for (int i = 0; i < _parameters.Length; i++) { _parameters[i] = new ParameterInf(reader, fieldHandlerFactory); } }
public MethodInf(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory) { MethodInfo = method; _name = method.Name; foreach (var itf in GetInterfacesForMethod(method.DeclaringType, method.GetBaseDefinition())) { _ifaceName = itf.Name; break; } var syncReturnType = method.ReturnType.UnwrapTask(); if (syncReturnType != typeof(void)) _resultFieldHandler = fieldHandlerFactory.CreateFromType(syncReturnType, FieldHandlerOptions.None); var parameterInfos = method.GetParameters(); _parameters = new ParameterInf[parameterInfos.Length]; for (int i = 0; i < parameterInfos.Length; i++) { _parameters[i] = new ParameterInf(parameterInfos[i], fieldHandlerFactory); } }
public TypeInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory) { _type = null; _name = reader.ReadString(); var methodCount = reader.ReadVUInt32(); _methodInfs = new MethodInf[methodCount]; for (int i = 0; i < methodCount; i++) { _methodInfs[i] = new MethodInf(reader, fieldHandlerFactory); } var properyCount = reader.ReadVUInt32(); _propertyInfs = new PropertyInf[properyCount]; for (int i = 0; i < properyCount; i++) { PropertyInfs[i] = new PropertyInf(reader, fieldHandlerFactory); } }
public TypeInf(Type type, IFieldHandlerFactory fieldHandlerFactory) { _type = type; _name = type.Name; var methodInfs = new List<MethodInf>(); var propertyInfs = new List<PropertyInf>(); if (type.IsSubclassOf(typeof(Delegate))) { var method = type.GetMethod("Invoke"); if (IsMethodSupported(method, fieldHandlerFactory)) { methodInfs.Add(new MethodInf(method, fieldHandlerFactory)); } } else { var methods = type.GetMethods(); foreach (var method in methods) { var methodBase = method.GetBaseDefinition(); if (methodBase.DeclaringType == typeof(object)) continue; if (methodBase.GetBaseDefinition().DeclaringType == typeof(IDisposable)) continue; if (!methodBase.IsPublic) continue; if (!IsMethodSupported(method, fieldHandlerFactory)) continue; methodInfs.Add(new MethodInf(method, fieldHandlerFactory)); } var properties = type.GetProperties(); foreach (var property in properties) { if (!property.CanRead || !property.CanWrite) continue; if (property.GetCustomAttributes(typeof(NotStoredAttribute), true).Length != 0) continue; if (property.GetIndexParameters().Length != 0) continue; if (property.GetGetMethod()==null) continue; if (property.GetSetMethod()==null) continue; if (!fieldHandlerFactory.TypeSupported(property.PropertyType)) continue; propertyInfs.Add(new PropertyInf(property, fieldHandlerFactory)); } } _methodInfs = methodInfs.ToArray(); _propertyInfs = propertyInfs.ToArray(); }
public MethodInf(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory) { MethodInfo = method; _name = method.Name; foreach (var itf in GetInterfacesForMethod(method.DeclaringType, method.GetBaseDefinition())) { _ifaceName = itf.Name; break; } var syncReturnType = method.ReturnType.UnwrapTask(); if (syncReturnType != typeof(void)) { _resultFieldHandler = fieldHandlerFactory.CreateFromType(syncReturnType, FieldHandlerOptions.None); } var parameterInfos = method.GetParameters(); _parameters = new ParameterInf[parameterInfos.Length]; for (int i = 0; i < parameterInfos.Length; i++) { _parameters[i] = new ParameterInf(parameterInfos[i], fieldHandlerFactory); } }
public ParameterInf(AbstractBufferedReader reader, IFieldHandlerFactory fieldHandlerFactory) { _name = reader.ReadString(); var handlerName = reader.ReadString(); _fieldHandler = fieldHandlerFactory.CreateFromName(handlerName, reader.ReadByteArray(), FieldHandlerOptions.None); }
public ParameterInf(ParameterInfo parameter, IFieldHandlerFactory fieldHandlerFactory) { _name = parameter.Name; _fieldHandler = fieldHandlerFactory.CreateFromType(parameter.ParameterType, FieldHandlerOptions.None); }
public PropertyInf(PropertyInfo property, IFieldHandlerFactory fieldHandlerFactory) { _name = property.Name; _fieldHandler= fieldHandlerFactory.CreateFromType(property.PropertyType, FieldHandlerOptions.None); }
public static TableFieldInfo Build(string tableName, PropertyInfo pi, IFieldHandlerFactory fieldHandlerFactory, Type clientType) { var fieldHandler = fieldHandlerFactory.CreateFromProperty(tableName, clientType, pi); if (fieldHandler == null) throw new BTDBException(string.Format("FieldHandlerFactory did not build property {0} of type {2} in {1}", pi.Name, tableName, pi.PropertyType.FullName)); return new TableFieldInfo(pi.Name, fieldHandler); }
public RelationInfoResolver(ObjectDB objectDB) { _fieldHandlerFactory = objectDB.FieldHandlerFactory; _typeConvertorGenerator = objectDB.TypeConvertorGenerator; }
static bool IsMethodSupported(MethodInfo method, IFieldHandlerFactory fieldHandlerFactory) { var syncReturnType = method.ReturnType.UnwrapTask(); if (syncReturnType != typeof(void)) if (!fieldHandlerFactory.TypeSupported(syncReturnType)) return false; foreach (var parameter in method.GetParameters()) { if (parameter.IsOptional) return false; if (parameter.IsOut) return false; if (parameter.IsRetval) return false; if (!fieldHandlerFactory.TypeSupported(parameter.ParameterType)) return false; } return true; }