Re[3]: Проблема с приведением
От: Аноним  
Дата: 12.11.05 09:23
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.