Как насчет помещения его в базовый класс:
class ViewModelBase
{
private string _message;
public string Message
{
get { return _message; }
set { _message = value; OnPropertyChanged("Message"); }
}
public bool VerifyPassword(string newPassword)
{
....
}
}
class ChangePwdViewModel : ViewModelBase
{
}
class ExpiringPwdViewModel : ViewModelBase
{
}
Обновление
Если вы не можете использовать базовый класс, потому что ваши модели представлений уже имеют базовый класс, тогда вы можете использовать интерфейс, как это предлагают другие. Однако это означает, что вам все равно придется реализовывать интерфейс во всех ваших классах моделей представлений, поэтому вы не получите слишком много в плане избежания нескольких реализаций (за исключением того, что у вас есть контракт на ваши модели представлений, что обычно является хорошей вещью). иметь).
Вы можете добиться своего рода «множественного наследования» в C # с помощью инструмента, подобного Dynamic Proxy , который позволяет создавать миксины. Таким образом, вы можете реализовать свойство Message
и проверку пароля в одном классе, а затем создать смешанный прокси, который объединит модель представления с этой реализацией. Это не так хорошо, как вам придется создавать все ваши экземпляры модели представлений через прокси-генератор, но это может быть сделано для работы. Посмотрите этот учебник , если он вам подходит.