是否有任何优雅的方式来绑定字符串到模型,短的写一堆样板代码来做自己的绑定?基本上我有一个通过telnet连接到第三方设备的命令行界面。我正在构建一个Web服务以将此CLI暴露给外部应用程序。在通过telnet发出命令后,我得到一个响应字符串,并且需要将其解析为模型。字符串解析到模型(RegEx模型联编程序?)
例子:
/> echosnd -if 1 -dn 5551234567
Echo Sounder Test created on Interface CITYCOTTNNN-5ES, Resource 12 with ID #2967232
/>
而且我想这个字符串结合创建以下对象:
public class ConfigureTestResponse
{
[CLIResponse(RegEx = "Interface (?<interface>[a-zA-Z0-9]*")]
public string Interface { get; set; }
[CLIResponse(RegEx = "Resource (?<resource>[0-9]*)")]
public int Resource { get; set; }
[CLIResponse(RegEx = "#(?<id>[0-9]*)")]
public int TestId { get; set; }
}
首先,我创建了CLIResponseAttribute持有该属性的正则表达式过滤器(虽然上面的过滤器很可能不起作用 - 我将它们插在插图中,只有TestId被测试[稍微])。我可以使用Regex将它们拆分成组,然后设置属性,但是我需要处理一些转换(int32,int64,decimal,string,complex model等)。属性类型是。我希望有某种绑定,我可以提供一个名称/值对,它会做适当的绑定 - 或甚至更好的东西...
是否有任何这样的事情?我虽然使用MVC DefaultModelBinder,但会有很多开销来使用它。处理在字符串中变平的复杂类型(和列表)将会很好。我不想这样做的是为每个命令编写特定的解析器,因为每个都以略微不同的格式返回结果。
谢谢!
(编辑:我想正则表达式移动到一个属性上的课,能够做到对字符串的IsMatch使用组,我认为我仍然可以与输出到属性绑定)