2013-06-05 2 views
0

У меня есть следующая функция ниже, которую я пытаюсь создать и заполнить класс User.Идентификатор динамического класса на основе переменной

Я хочу, чтобы Идентификатор класса был динамически назван для каждого пользователя.

Данные, которые передаются, содержат информацию, как показано ниже.

USER  | CONTROLNUMBER 
"jsmith" | "789842" 

Я хочу создать класс с именем «JSmith» и соответствующим образом заполнить свойства этого класса.

Я чрезвычайно новичок в использовании классов полезным способом, поэтому будьте нежны.

public static void FillUserListClass(DataTable dt, string _userName) 
{ 
User _userName = new User(); 
_userName.ControlNumber = "789842"; 
_userName.UserName = "jsmith"; 
} 
+0

Это не полезный способ использования классов. Что вы пытаетесь достичь? –

+0

думать о слове «класс» Джон Смит не является классом, если их не много (что, я думаю, есть, но это не главное!) Пользователь - это класс объекта/объекта, а jsmith - как пользователь. поэтому то, что вы делаете в этом фрагменте кода, является правильным. – matt

+0

Я пытаюсь отслеживать все ControlNumbers, которые моя программа выбирает (функция не показана). Я также хотел бы отслеживать имя, связанное с каждым ControlNumber. Я думал об использовании словаря, но это кажется ограниченным, так как у меня будет 1 UserName и потенциально тысячи ControlNumbers для каждого пользователя. – MaylorTaylor

ответ

0

Будет ли что-то вроде этого правильным для словаря идеи списка?

static Dictionary<string, List<int>> UserList = new Dictionary<string, List<int>>(); 

public static void FillUserListClass(DataTable dt) 
{ 
    for (int ctr = 0; ctr < dt.Rows.Count; ctr++) 
       { 
        var row = dt.Rows[ctr]; 
        var userName = row["User"].ToString(); 

        if (UserList.ContainsKey(userName)) 
        { 
         UserList[userName].Add(Convert.ToInt32(row["ControlNumber"])); 
        } 
        else 
        { 
         UserList.Add(row["User"].ToString(), new List<int>()); 
         UserList[userName].Add(Convert.ToInt32(row["ControlNumber"])); 
        } 
    } 

И если да, то как бы я распечатать словарь, вы увидите нечто похожее на

'jsmith' has 4 control numbers. 

"234950" 
"494602" 
"494200" 
"585890" 
+1

yep! это идея! для печати просто сделайте 'foreach (var kvp в UserList)', тогда kvp (или keyValuePair) будет иметь ключевой элемент, то есть имя пользователя и член значения, который является списком чисел – matt