Ошибка при использовании структуры внутри класса с аттрибутом PropertyChanged
От: Rjukan78  
Дата: 30.07.13 16:11
Оценка: +1
Здравствуйте Игорь,

используем в нашем проете BLToolkit и при переходе от версии 3 к 4 столкнулись с проблемой — код который раньше работал, сломался.
Вот простейший пример для воспроизвдения ошибки

using BLToolkit.Reflection;
using BLToolkit.TypeBuilder;


namespace test_BLToolkit
{
   public struct UserClass
   {
   }

   [PropertyChanged(false)]
   public abstract class UserConfig : BaseConfig
   {
      protected UserConfig()
      {
         Range = new UserClass();
      }
      public abstract UserClass Range { get; set; }
   }

   class Program
   {
      static void Main(string[] args)
      {
         var obj = TypeAccessor.CreateInstance(typeof(UserConfig));
      }
   }
}


Если запустить, летит ошибка "common language runtime detected an invalid program.". Если сделать UserClass классом, то все работает. Будем очень благодарны за фикс.
Re: Ошибка при использовании структуры внутри класса с аттрибутом PropertyChange
От: Rjukan78  
Дата: 02.08.13 18:57
Оценка:
Приведенный пример некорректен, вот более короткий и правильный пример:

using BLToolkit.EditableObjects;
using BLToolkit.Reflection;
using BLToolkit.TypeBuilder;


namespace test_BLToolkit
{
   public struct UserClass { }

   [PropertyChanged(false)]
   public abstract class UserConfig : EditableObject
   {
      public abstract UserClass Range { get; set; }
   }

   class Program
   {
      static void Main(string[] args)
      {
         TypeAccessor.CreateInstance<UserConfig>().Range = new UserClass();
      }
   }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.