Loading...
lnxslackware avatar lnxslackware 18 Точки

Ще ти гръмне с NullReferenceException защото в конструктора, който не приема Email пак ползваш сетъра на пропъртито Email, като му подаваш null. Съответно при проверката:

if (!value.Contains("@"))

 се опитва да достъпи метод Contains на null.

Вариянта е в конструктора, който приема само име и години просто да не сетваш нищо за email.

Поздрави.

2
bojidar.tonchev avatar bojidar.tonchev 2 Точки

Редактирах го, но отново ми гърми с NullReferenceException.

Оправих го като добавих проверка:

if (value!=null&&!value.Contains("@"))
                    {
                        throw new ArgumentException("Invalid Email");
                    }

Благодаря за бързия отговор.

0
Shrako avatar Shrako 1 Точки

Доколкото разбрах от условието, би трябвало да можеш да създадеш човек без да задаваш email, докато при такава проверка при липса на email ще гърми

1
konstantin avatar konstantin 9 Точки

за email-a можеш да направиш проверка с Regex

if (!Regex.IsMatch(value, @".+@.+"))

то тогава

throw new ArgumentException("Invalid Email!");

 

4
yasvisu avatar yasvisu 20 Точки

Това е лоша идея. Ако ще има валидация, сложи я още в началото. Искаш като пазиш някакви данни те да са валидни още при попълването си.

Да речем, че искам да използвам този мейл за нещо. Разчитам, че класа има валидни данни, но всъщност валидацията е изнесена във някаква функция, през която не минавам. Следователно - лоша енкапсулация и бъгове, в краен случай.

Би трябвало да стане леко и ефективно със същата проверка, която си използвал :)

4
05/06/2015 13:28:12
enisslkglu avatar enisslkglu 10 Точки

Благодаря за съветът. Ще сменч решението и за по нататък ще гледам да не правя същата грешка.

0
WindWallk avatar WindWallk 95 Точки

Здравей,

В условието пишеше да проветим дали има символа "@" в емайла като валидация.
можеш да използваш string.Contains метода в сетъра:

public string Email
{
        get
        {
            return this.email;
        }
        set
        {
            if (value != null && !value.Contains("@"))
            {
                throw new ArgumentOutOfRangeException("Invalid email!");
            }

            this.email = value;
        }

}

0
05/06/2015 15:03:39
yasvisu avatar yasvisu 20 Точки

Има лека грешка вътре в if-a:

if (value != null || !value.Contains("@"))
{
    //...
}

Ще хвърля грешка за всеки стринг, който не е null (заради или-то). 

По-скоро:

if (value != null  && !value.Contains("@"))
2
05/06/2015 13:34:13
WindWallk avatar WindWallk 95 Точки

Така е, моя грешка трябва да е :

 if (value != null && !value.Contains("@"))

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.