2011-04-12 57 views
2

是否有任何优雅的方式来绑定字符串到模型,短的写一堆样板代码来做自己的绑定?基本上我有一个通过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使用组,我认为我仍然可以与输出到属性绑定)

回答

0

没有,没有魔术可以为你做到。更好地开始! :)