Лучший способ переписать ниже метод - PullRequest
0 голосов
/ 13 июня 2019

У меня есть метод ниже, который работает Хорошо, но я считаю, что мы можем улучшить его, как избавиться от этих условий, но не уверены, как?

 protected void SaveSession<T>(T sessionProperty, Management management) where T : class
        {
            string propertyType = typeof(T).Name;

            if (propertyType.Equals(typeof(A).Name))
            {
                management.A = sessionProperty as A;
            }
            else if (propertyType.Equals(typeof(B).Name))
            {
                management.B = sessionProperty as B;
            }
            else if (propertyType.Equals(typeof(C).Name))
            {
                management.C = sessionProperty as C;
            }

            Session["mysession"] = management;
        }

Я использую последнюю версию C # 7.0

1 Ответ

3 голосов
/ 13 июня 2019

В C # 7 и более поздних версиях вы можете использовать оператор переключения сопоставления с образцом, например:

switch(sessionProperty)
{
    case A a:
        management.A=a;
        break;
    case B b:
        management.B=b;
        break;
    case C c:
        management.C=c;
        break;
}

В более ранних версиях вы можете использовать оператор is для проверки типа, например:

if (sessionProperty is A)
{
    management.A=(A)sessionProperty;
}
else if (sessionProperty is B)
{
    management.B=(B)sessionProperty;
}
...