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