我正在尝试从WebApi操作中传递一个相当强大的匿名对象,并且这样做是希望将所有相关逻辑保持在一起。我遇到的问题是我无法以这种方式设置对象的属性。我的第一个解决方案是执行以下操作:
AwbNumber = new Func<JSchema>(() =>
{
var s = gen.Generate(typeof(string))
s.Pattern = "^[0-9a-zA-Z]{0,32}$";
return s;
})()
但我对此并不是很疯狂,所以我决定制作一个扩展方法,允许我通过Action
来操纵对象的属性。
public static class ObjectExtensions
{
public static T Manipulate<T>(this T obj, Action<T> initializer)
{
initializer(obj);
return obj;
}
}
AwbNumber = gen.Generate(typeof(string)).Manipulate(
(s) =>
{
s.Pattern = "^[0-9a-zA-Z]{0,32}$";
})
我对这个解决方案感到满意,但似乎这可能是一种常见的情况,所以我想知道在.NET中是否存在这样的东西我找不到。或者我是否完全错过了这个问题的另一种解决方案?