2010-01-22 56 views
1

我正在考虑一个自定义模型联编程序的值,该联编程序可以创建在我的域图层中定义的不可变值对象。然后,我可以将它们通过堆栈并将它们设置在适当的实体上。有没有人试过?有没有运气?认为它是一个愚蠢的想法?DDD友好的ASP.NET MVC模型绑定器?

+0

你没有定义你将如何以及何时使用你的不可变值对象,以及你的意思是什么。有很多解决方案(通过存储库中的id)绑定实体 - 例如,在S#arp Architecture中 - 但您将如何绑定值对象?通过绑定他们的领域?不能默认绑定程序做到这一点? – queen3 2010-01-28 11:14:32

回答

1

如果“值对象”你的意思是只能通过将值传递给构造函数创建的对象,而不是通过结合领域,我觉得你有这些解决方案:

  1. 写定制绑定 - 虽然我不能告诉现在如何一次访问几个字段。

  2. 传递视图模型(允许绑定到其字段),然后将其转换为值对象。使用反射写一个简单的转换器(几行)。您必须按名称或类型将视图模型属性和构造函数参数关联起来。您可以让您的视图模型定义什么是相应的值类型,并在动作过滤器/ OnActionExecuting中自动调用转换器。这是一种半自动的模型绑定。

  3. 将类似FormCollection的东西传递给动作,然后调用反射方法,如var value = BindValue <ValueType>(formCollection)。