【发布时间】:2010-09-21 14:45:49
【问题描述】:
这主要用于教育目的。我正在尝试创建本示例中使用的 InputMapper 类:
var mapper = new InputMapper<SomeType>();
mapper.Map("some user input", someType => someType.IntProperty, "Input was not an integer");
mapper.Map("some user input", someType => someType.BoolProperty, "Input was not a bool");
SomeType someTypeInstance = mapper.CreateInstance();
我的 InputMapper 类包含使用 Map() 方法创建的所有映射的集合。 CreateInstance() 将遍历试图转换用户输入并将其分配给 lambda 表达式中使用的属性的映射。在循环过程中,它将保存抛出的任何 FormatExceptions 的集合。
我的问题是:
- InputMapper.Map()方法中,lambda参数类型应该是什么?
- 在 InputMapper.CreateInstance() 方法中,如何尝试设置我创建的 T 实例的属性?
谢谢!
更新
博士。 Skeet 询问有关我的意图的更多信息。
InputMapper 类将用于将用户输入分配给任何对象的成员,负责将用户输入转换为属性类型。类的接口可以从上面的例子中推断出来。
更新 2
在牵手之后,乔恩和丹将我带到了那里。你能提出改进建议吗?这是我所拥有的:http://pastebin.com/RaYG5n2h
【问题讨论】:
-
这取决于 --
someType.IntProperty/BoolProperty的类型是什么? -
假设“sometType”实际上应该读作“someType”。
-
@david - int 和 bool 分别...
-
有什么特别的理由想要并使用 lambda 作为参数,而不仅仅是一个枚举来指示类型?
-
@Josh - 该参数不用于指示类型。它用于指示要尝试使用 Map() 方法提供的用户输入设置的属性。
标签: c# .net reflection lambda