예제 #1
0
        /// <summary>
        /// Adds the direct definition.
        /// </summary>
        /// <param name="definition">The definition.</param>
        public void AddDirectDefinition(DirectTypeDefinition definition)
        {
            _directTypes[definition.DirectType] = definition;
            _wrappedDirectTypes.Add(definition.WrappedDirectType);

            var typeInfo = definition.TypeInfo;

            _directSignatures.Add(new PathInfo(typeInfo.TypeName).Signature);
        }
예제 #2
0
        /// <summary>
        /// Initialize important type systems definitions.
        /// </summary>
        private void initializeTypeSystemBase()
        {
            //null support
            var nullDefinition = new DirectTypeDefinition <Null>();

            nullDefinition.ForcedInfo = Null.TypeInfo;
            AddDirectDefinition(nullDefinition);

            //support for System.Object
            var chain = new InheritanceChain(TypeDescriptor.Create <object>(), new InheritanceChain[0]);

            _inheritanceChains.Add(chain.Path.Signature, chain);

            //support for Array
            var arrayDefinition = new DirectTypeDefinition(typeof(Array <>));

            arrayDefinition.ForcedInfo = TypeDescriptor.ArrayInfo;
            AddDirectDefinition(arrayDefinition);
        }