2015-07-15 3 views
1

Если у меня есть это:Как добавить оператор if в анонимный класс?

SubMenuList=new object[] 
{ 
    new 
    { 
     transKey = "PERSONAL_INFORMATION", 
     stateName="account.personalinformation", 
     displayUrl = "/account/personalinformation" 
    }, 
    new 
    { 
     tranKey = "NOTIFICATIONS", 
     stateName = "account.notificationsettings", 
     displayUrl = "/account/notifications" 
    } 
} 

Могу ли я каким-то образом добавить if заявление к этому и сказать, например:

if (something != null) 
{ 
    new 
    { 
     transKey = "PERSONAL_INFORMATION", 
     stateName="account.personalinformation", 
     displayUrl = "/account/personalinformation" 
    } 
} 
+0

Вы хотите добавить «ПЕРСОНАЛЬНАЯ ИНФОРМАЦИЯ» для отображения только в том случае, если условие истинно? или в чем ваш вопрос? –

+0

yes Я хочу добавить личную информацию, если условие истинно – None

+0

Простое решение, используйте реальный тип, а не анонимный, используйте список, а не массив, и выполните 'if (something! = Null) {list.Add (data) ; } ' –

ответ

1

Для этой цели лучше использовать List<Object>:

var list = new List<object> 
{ 
    new 
    { 
     transKey = "PERSONAL_INFORMATION", 
     stateName="account.personalinformation", 
     displayUrl = "/account/personalinformation" 
    } 
}; 
if (something != null) 
{ 
    list.Add(new 
      { 
       tranKey = "NOTIFICATIONS", 
       stateName = "account.notificationsettings", 
       displayUrl = "/account/notifications" 
      }); 
} 

, если вы хотите получить массив, вы можете вызвать ToArray() по ссылке:

SubMenuList = list.ToArray(); 

Здесь лучше ввести не анонимный тип, потому что эти объекты имеют одинаковую структуру, и без контекста трудно догадаться, почему вы не используете именованные типы.

+0

@AlexSikillnda im используя анонимный тип becuse Я не знаю, как передавать значения от не анонимного типа до $ scope в угловой ... ты знаешь? – None

+0

@None, C# ничего не знает об угловом, поэтому я подозреваю, что это API, который используется в приложении Angular. Я также подозреваю, что он сериализуется в JSON, но можно сериализовать именованные типы с тем же JSON, что и анонимные. –

0

Вы можете использовать список с реальным типом, как предлагается @DavidArno, и добавить новый элемент в список, если something != null.

Вы также можете использовать анонимные типы:

var list = new[] 
{ 
    new 
    { 
     transKey = "PERSONAL_INFORMATION", 
     stateName="account.personalinformation", 
     displayUrl = "/account/personalinformation" 
    }, 
    new 
    { 
     transKey = "NOTIFICATIONS", 
     stateName = "account.notificationsettings", 
     displayUrl = "/account/notifications" 
    } 
}.ToList() 

if (something != null) 
{ 
    list.Add(new 
    { 
     transKey = "PERSONAL_INFORMATION", 
     stateName="account.personalinformation", 
     displayUrl = "/account/personalinformation" 
    }); 
} 

Если вам не нужно, чтобы получить доступ к членам анонимного типа (например, list[0].transKey) или в порядке с помощью отражения, ответ Алекс может быть лучше подходит для ваш вопрос.

+0

i can not use ToList() потому что im using var list = new object [] – None

+0

Вы всегда можете отнести список к массиву объектов, используя list.Cast () .ToArray() –

Смежные вопросы