Я передаю более 20 аргументов разных типов в метод. Там должен быть какой-то чистый способ пройти это. Можете ли вы помочь мне.
Я могу передать массив объектов, имеющих все эти 20+ аргументов, но в целевом методе я должен проверить тип. Это хороший способ передать длинный список аргументов.
Код: образец из кода не заполнен
private DataTable CreateDataTable(string[] args)
{
DataTable dt = new DataTable();
dt.Clear();
foreach (var arg in args)
{
dt.Columns.Add(arg);
}
return dt;
}
Я могу передать массив в этом методе, потому что все аргументы одного типа.
DataTable dt = CreateDataTable(new string[] { "ProjectId",
"ParentProjectId",
"ProjectName",
"CreationDate");
Теперь у меня есть более 20+ значений типов diff, таких как следующие
int projectId = 100;
int? parentProjectId = SomeCondition ? 10 : null;
string projectName = "Good Project"
DateTime createdDate = DateTime.Now;
.
.
.
В этом методе я бы присвоил значения столбцам.
AssignValuesToDataTable(dt, Arguments list ......)
// Implementation would be like this. Here I am passing 20+ arguments.
private DataTable AssignValuesToDataTable(DataTable dt, arguments list ........)
{
DataRow row = dt.NewRow();
row["ProjectId"] = projectId;
.
.
.
dt.Rows.Add(row);
}
Не могли бы вы помочь. Я использую C#4
EDIT:
Приведенный выше код является примером из моего реального кода, но мне интереснее узнать, что является лучшим способом для достижения этой цели.
Из Ужаса Кодирования (Джефф Этвуд)
Чем больше параметров у метода, тем он сложнее. Ограничить
количество параметров, которые вам нужны в данном методе, или использовать объект для
объединить параметры.
Выше цитата из этого поста.
Кодовые запахи
Спасибо.