Ваш класс пользователя должен иметь событие, которое запускается с изменениями имени пользователя.Какой бы объект не отслеживал пользователей, он должен иметь метод, который подписан на событие изменения имени пользователя и может создавать новый объект Mail и отправлять необходимую электронную почту.
Чтобы создать событие в классе пользователя, сделайте это:
public class User {
public event EventHandler UserNameChanged;
private string m_Name;
public string Name {
get { return m_Name; }
set {
if(m_Name != value) {
m_Name = value;
// assuming single-threaded application
if(UserNameChanged != null)
UserNameChanged(this, EventArgs.Empty);
}
}
}
// everything else is the same...
}
В управляющем коде у вас будет метод для обработки события:
private void Handle_UserNameChanged(object sender, EventArgs e) {
User user = (User)sender;
// create the mail object and send it
}
Я не думаю, что ваш класс Mail в его нынешнем виде будет работать.Если Mail предназначен для представления почтового сообщения, то он должен предоставить все методы и свойства, необходимые для настройки почтового сообщения и его отправки.Но если все, что вам нужно сделать, это использовать почтовую систему .NET Framework для отправки электронной почты, то Mail может быть статическим классом с методами, которые отправляют различные типы предопределенных электронных писем (не лучший дизайн, но работоспособный в начале), включаяметод SendUserInfoChangeEmail ().Это может вызвать ваш обработчик событий.