Ваш код никогда не будет работать. Вам нужен экземпляр вашего объекта для выполнения метода. Что-то вроде:
Type model = AssemblyHelper.GetTypeByClassName(Assembly.GetExecutingAssembly(), modelName + MappingColums.Tokens.Validation);
MethodInfo method = model.GetMethod(MappingColums.Tokens.Get + modelName);
myClass myObject = new myObject();
object result = method.Invoke(myObject , null);
Если Вашему объекту дают значение, которое недопустимо для свойства, и Вы выдаете исключение затем, Вы не должны повышать PropertyChanging
событие. Необходимо только сгенерировать событие, когда Вы решили, что значение изменится. Типичный сценарий использования для изменения простого поля:
public T Foo
{ get
{ return m_Foo;
}
set
{ if (m_Foo == value) return; //no need for change (or notification)
OnPropertyChanging("Foo");
m_Foo = value;
OnPropertyChanged("Foo");
}
}
Как в стороне - PostSharp имеет интересную способность автореализовать INotifyPropertyChanged - как так.
Если требуется постараться не реализовывать INotifyPropertyChanged в целом, рассмотрите использование Средств управления Обновлением.NET вместо этого. Это устраняет почти весь бухгалтерский код.