public bool TypeMappingExists(IodineTypeDefinition from, Type to) { if (to.IsArray) { return(TypeMappingExists(from, to.GetElementType())); } TypeRegistryEntry entry = typeMappings.Where(p => p.IodineType == from && p.NativeType != null && p.NativeType.IsAssignableFrom(to)).FirstOrDefault(); return(entry != null); }
public object ConvertToNativeObject(IodineObject obj, Type expectedType) { if (obj == IodineNull.Instance || obj == null) { return(null); } IodineTypeDefinition key = obj.TypeDef; TypeRegistryEntry entry = typeMappings.FirstOrDefault(p => p.IodineType == key && p.NativeType == expectedType); if (entry != null) { return(entry.Mapping.ConvertFrom(this, obj)); } return(null); }
public void AddTypeMapping(Type type, IodineTypeDefinition iodineType, TypeMapping mapping) { typeMappings.Add(new TypeRegistryEntry(mapping, iodineType, type)); }
public TypeRegistryEntry(TypeMapping mapping, IodineTypeDefinition iodineType, Type type) { Mapping = mapping; IodineType = iodineType; NativeType = type; }
public bool TypeMappingExists(IodineTypeDefinition from, Type to) { TypeRegistryEntry entry = typeMappings.FirstOrDefault(p => p.IodineType == from && p.NativeType.IsAssignableFrom(to)); return(entry != null); }