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),
|
|
"]]"
|
|
});
|
|
}
|
|
}
|
|
}
|