Здравствуйте, Alexey Axyonov, Вы писали:
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>>
AA>В потверждение этому вот код который проверен на FW 1.1/2.0:
AA>AA> class Program
AA> {
AA> [Flags]
AA> enum Flags : byte
AA> {
AA> Flag1 = 1,
AA> Flag2 = 2,
AA> Flag4 = 4,
AA> Flag16 = 16
AA> }
AA> static void Main(string[] args)
AA> {
AA> object value = 17L;
AA> if (value.GetType() != Enum.GetUnderlyingType(typeof(Flags)))
AA> value = Convert.ChangeType(value, Enum.GetUnderlyingType(typeof(Flags)));
AA> Flags f = (Flags)Enum.ToObject(typeof(Flags), value);
AA> Console.WriteLine(f);
AA> }
AA> }
AA>
Спасибо за решение.
Интересно что, строчка
Enum.ToObject(type, value);
закомментарена в RFD