AA>Вот так должно работать:
AA>AA>// BaseMemberMapper.MapFrom(Type type, Attribute[] attributes, object value, bool trimmable)
AA>// ...
AA>//
AA>Type underlyingType = Enum.GetUnderlyingType(type);
AA>if (underlyingType != value.GetType())
AA> value = Convert.ChangeType(value, underlyingType);
AA>value = Enum.ToObject(type, value);
AA>
В потверждение этому вот код который проверен на FW 1.1/2.0:
class Program
{
[Flags]
enum Flags : byte
{
Flag1 = 1,
Flag2 = 2,
Flag4 = 4,
Flag16 = 16
}
static void Main(string[] args)
{
object value = 17L;
if (value.GetType() != Enum.GetUnderlyingType(typeof(Flags)))
value = Convert.ChangeType(value, Enum.GetUnderlyingType(typeof(Flags)));
Flags f = (Flags)Enum.ToObject(typeof(Flags), value);
Console.WriteLine(f);
}
}
... << RSDN@Home 1.2.0 alpha rev. 619>>