多年来我做了ASP.NET Web表单开发我被一个专有库所破坏,这让我可以做以下事情:
UpdateToObject(ControlsCollection, obj)
UpdateFromObject(ControlsCollection, obj)
Run Code Online (Sandbox Code Playgroud)
概念上,代码做了一些与MVC Model Binder非常相似的东西,即将表单的发布值作为输入,它将填充自定义对象.基本上它使开发人员免于做猴子代码,如
employee.Name = txtName.Text;
employee.DOB = DateTime.Parse(txtDOB.Text);
Run Code Online (Sandbox Code Playgroud)
等等..
现在,这个专有的库在我参与的新项目中不可用,它是一个Web表单项目.所以我想知道是否有一种System.Web.Mvc.DefaultModelBinder
在Web表单的上下文中使用的方法.目标是从域对象和背面实现简单和容易的控制,最好考虑验证注释.如果不可能,有人可能会指出我的开源解决方案来满足这种需求.我真的不想重写这样的代码.
提前致谢.
我正在尝试进行单元测试,使用VS单元测试设备跟随方法.
void Get(string name, Action<string> callBack);
Run Code Online (Sandbox Code Playgroud)
这是单元测试仪
[TestMethod]
public void Test()
{
Action<string> cb = name =>
{
Assert.IsNotNull(name);
};
var d = new MyClass();
d.Get("test", cb);
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是内部实现使用BackgroundWorker,因此在另一个线程上调用回调.这是内部实施.
public void Get(string name, Action<string> callBack)
{
callBackString = callBack;
GetData(name);
}
private void GetData(string name)
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += bw_DoWork;
bw.RunWorkerCompleted += bw_RunWorkerCompleted;
bw.RunWorkerAsync(name);
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//do work here
if (null != callBackString)
callBackString("ok");
}
Run Code Online (Sandbox Code Playgroud)
当然因为Get()立即返回,测试完成并且测试停止,因此RunWorkerCompleted永远不会被执行.我可以通过普通应用程序(WPF)轻松测试它,因为它仍在运行,但我希望能够对此进行单元测试.
有任何想法吗?提前致谢.