Я создал класс, назовем его User. В этом классе у меня есть специально созданный класс под названием EMail. Этот класс содержит только строку, которая содержит значение адреса электронной почты и некоторую логику для проверки адреса. Так это выглядит в моем классе User.
public class User{
public string Name{get;set;}
public EMailAddress EMail{get;set;}
...
}
Теперь я хочу привязать это сообщение к столбцу в моих базах данных, используя код CTP5 EF4. Но я не могу этого сделать, я даже не получаю хорошего исключения, все, что я получаю, это «Исключение прерванного потока», но если я закомментирую свое свойство EMail, оно будет работать хорошо.
Мой класс EMailAddress выглядит следующим образом.
public class EMailAddress
{
//-- Declaration
private string _email;
//-- Constructor
public EMailAddress(string emailAddress)
{
if (emailAddress == null)
throw new ArgumentNullException(string.Format("Supplied emailaddress can't be null"));
if (!IsValid(emailAddress))
throw new ArgumentException(string.Format("'{0}' is not a valid Emailaddress", emailAddress));
_email = emailAddress;
}
//-- Methods
private static bool IsValid(string emailAddress)
{
Regex re = new Regex(Constants.EMAIL_REGULAR_EXPRESSION_PATTERN);
return re.IsMatch(emailAddress);
}
public override string ToString()
{
return _email;
}
public override bool Equals(object obj)
{
if (obj == null)
return false;
if (obj is string)
return _email == (string)obj;
if(obj is EMailAddress)
return _email == ((EMailAddress)obj).ToString();
return false;
}
public override int GetHashCode()
{
return _email.GetHashCode();
}
//-- Operator
public static bool operator ==(EMailAddress emailAddress, EMailAddress emailAddress2)
{
return object.Equals(emailAddress, emailAddress2);
}
public static bool operator !=(EMailAddress emailAddress, EMailAddress emailAddress2)
{
return !(emailAddress == emailAddress2);
}
}
И я хочу, чтобы в классе EMailAddress не было общедоступных свойств. Есть ли способ позволить EF использовать метод .ToString (), когда он сохраняет значение в базе данных, и использовать конструктор при загрузке данных из базы данных для заполнения моих объектов.
Спасибо ...