internal override void OnAddedToContentWriter(ContentWriter output) { base.OnAddedToContentWriter(output); _keyWriter = output.GetTypeWriter(typeof(K)); _valueWriter = output.GetTypeWriter(typeof(V)); }
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); } }
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)); } } }
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); } }
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); } } }
internal override void OnAddedToContentWriter(ContentWriter output) { base.OnAddedToContentWriter(output); _elementWriter = output.GetTypeWriter(typeof(T)); }
internal override void OnAddedToContentWriter(ContentWriter output) { base.OnAddedToContentWriter(output); _underlyingType = Enum.GetUnderlyingType(typeof(TEnum)); _underlyingTypeWriter = output.GetTypeWriter(_underlyingType); }