45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
|
#region Using Statements
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Globalization;
|
|||
|
|
|||
|
#endregion
|
|||
|
|
|||
|
// This file is part of the ANX.Framework created by the
|
|||
|
// "ANX.Framework developer group" and released under the Ms-PL license.
|
|||
|
// For details see: http://anxframework.codeplex.com/license
|
|||
|
|
|||
|
namespace ANX.Framework.Content.Pipeline.Serialization.Compiler
|
|||
|
{
|
|||
|
internal class EnumWriter<T> : ContentTypeWriter<T> where T : struct, IConvertible
|
|||
|
{
|
|||
|
private Type underlyingType = Enum.GetUnderlyingType(typeof(T));
|
|||
|
private ContentTypeWriter underlyingTypeWriter;
|
|||
|
|
|||
|
protected override void Initialize(ContentCompiler compiler)
|
|||
|
{
|
|||
|
this.underlyingTypeWriter = compiler.GetTypeWriter(this.underlyingType);
|
|||
|
}
|
|||
|
|
|||
|
protected internal override void Write(ContentWriter output, T value)
|
|||
|
{
|
|||
|
object value2 = value.ToType(this.underlyingType, CultureInfo.InvariantCulture);
|
|||
|
output.WriteRawObject<object>(value2, this.underlyingTypeWriter);
|
|||
|
}
|
|||
|
|
|||
|
public override string GetRuntimeReader(TargetPlatform targetPlatform)
|
|||
|
{
|
|||
|
return string.Concat(new object[]
|
|||
|
{
|
|||
|
typeof(ContentTypeReader).Namespace,
|
|||
|
'.',
|
|||
|
"EnumReader`1[[",
|
|||
|
this.GetRuntimeType(targetPlatform),
|
|||
|
"]]"
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
}
|