コード例 #1
0
        internal override void OnAddedToContentWriter(ContentWriter output)
        {
            base.OnAddedToContentWriter(output);

            _keyWriter   = output.GetTypeWriter(typeof(K));
            _valueWriter = output.GetTypeWriter(typeof(V));
        }
コード例 #2
0
        internal override void OnAddedToContentWriter(ContentWriter output)
        {
            base.OnAddedToContentWriter(output);

            foreach (var property in _properties)
            {
                output.GetTypeWriter(property.PropertyType);
            }

            foreach (var field in _fields)
            {
                output.GetTypeWriter(field.FieldType);
            }
        }
コード例 #3
0
        internal override void OnAddedToContentWriter(ContentWriter output)
        {
            base.OnAddedToContentWriter(output);

            if (TargetType.IsGenericType)
            {
                _genericTypes = new List <ContentTypeWriter>();
                var arguments = TargetType.GetGenericArguments();
                foreach (var arg in arguments)
                {
                    _genericTypes.Add(output.GetTypeWriter(arg));
                }
            }
        }
コード例 #4
0
        protected internal override void Write(ContentWriter output, object value)
        {
            if (_baseType != null)
            {
                var baseTypeWriter = output.GetTypeWriter(_baseType);
                baseTypeWriter.Write(output, value);
            }

            foreach (var property in _properties)
            {
                Write(value, output, property);
            }

            foreach (var field in _fields)
            {
                Write(value, output, field);
            }
        }
コード例 #5
0
        private static void Write(object parent, ContentWriter output, MemberInfo member)
        {
            var property = member as PropertyInfo;
            var field    = member as FieldInfo;

            Debug.Assert(field != null || property != null);

            Type   elementType;
            object memberObject;

            if (property != null)
            {
                elementType  = property.PropertyType;
                memberObject = property.GetValue(parent, null);
            }
            else
            {
                elementType  = field.FieldType;
                memberObject = field.GetValue(parent);
            }

            if (_sharedResources.Contains(member))
            {
                output.WriteSharedResource(memberObject);
            }
            else
            {
                var writer = output.GetTypeWriter(elementType);
                if (writer == null || elementType == typeof(object) || elementType == typeof(Array))
                {
                    output.WriteObject(memberObject);
                }
                else
                {
                    output.WriteObject(memberObject, writer);
                }
            }
        }
コード例 #6
0
        internal override void OnAddedToContentWriter(ContentWriter output)
        {
            base.OnAddedToContentWriter(output);

            _elementWriter = output.GetTypeWriter(typeof(T));
        }
コード例 #7
0
 internal override void OnAddedToContentWriter(ContentWriter output)
 {
     base.OnAddedToContentWriter(output);
     _underlyingType       = Enum.GetUnderlyingType(typeof(TEnum));
     _underlyingTypeWriter = output.GetTypeWriter(_underlyingType);
 }