Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public void AddTypeMapping(Type type, IodineTypeDefinition iodineType, TypeMapping mapping)
 {
     typeMappings.Add(new TypeRegistryEntry(mapping, iodineType, type));
 }
Esempio n. 4
0
 public TypeRegistryEntry(TypeMapping mapping, IodineTypeDefinition iodineType, Type type)
 {
     Mapping    = mapping;
     IodineType = iodineType;
     NativeType = type;
 }
Esempio n. 5
0
        public bool TypeMappingExists(IodineTypeDefinition from, Type to)
        {
            TypeRegistryEntry entry = typeMappings.FirstOrDefault(p => p.IodineType == from && p.NativeType.IsAssignableFrom(to));

            return(entry != null);
        }