Kas*_*hif 2 .net c# refactoring visual-studio-2010
我将20多个不同类型的参数传递给方法.应该有一些干净的方式来传递这个.你能帮我么.
我可以传递具有所有这20多个参数的对象数组,但在目标方法中我必须对类型进行检查.这是传递长参数列表的好方法.
代码:代码未满的样本
private DataTable CreateDataTable(string[] args)
{
DataTable dt = new DataTable();
dt.Clear();
foreach (var arg in args)
{
dt.Columns.Add(arg);
}
return dt;
}
Run Code Online (Sandbox Code Playgroud)
我可以在此方法中传递数组,因为所有参数都是相同的类型.
DataTable dt = CreateDataTable(new string[] { "ProjectId",
"ParentProjectId",
"ProjectName",
"CreationDate");
Run Code Online (Sandbox Code Playgroud)
现在,我有超过20多个diff类型的值,如下所示
int projectId = 100;
int? parentProjectId = SomeCondition ? 10 : null;
string projectName = "Good Project"
DateTime createdDate = DateTime.Now;
.
.
.
Run Code Online (Sandbox Code Playgroud)
在这个方法中,我会为列分配值.
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);
}
Run Code Online (Sandbox Code Playgroud)
你能帮忙吗?我在用C#4
编辑: 上面的代码是我的真实代码的一个例子,但我更有兴趣知道什么是实现这一目标的最佳方法.
来自Coding Horror(杰夫阿特伍德)
方法具有的参数越多,它就越复杂.限制给定方法中所需的参数数量,或使用对象组合参数.
以上引用来自此博文. 代码闻起来
谢谢.
传递代表数据的对象:
private DataTable AssignValuesToDataTable(DateTable dt, Project project)
{
row["ProjectId"] = project.Id;
row["ProjectName"] = project.Name;
...
}
Run Code Online (Sandbox Code Playgroud)
同
public class Project
{
public int Id {get;set;}
public string Name {get;set;}
...
}
Run Code Online (Sandbox Code Playgroud)
当然,接下来的问题是:为什么要使用DataTable 在所有?因为一个Project类是用于表达该数据的更好的隐喻/机制,并且List<Project>(或BindingList<Project>)对于这样的集合是理想的.
(提示:我非常非常非常非常使用DataTable- 或者可能不那么频繁)
| 归档时间: |
|
| 查看次数: |
2044 次 |
| 最近记录: |