Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字符串解析到模型(RegEx模型绑定器?)_C#_Regex_Model_Bind - Fatal编程技术网

C# 字符串解析到模型(RegEx模型绑定器?)

C# 字符串解析到模型(RegEx模型绑定器?),c#,regex,model,bind,C#,Regex,Model,Bind,除了自己编写一堆样板代码进行绑定之外,还有什么优雅的方法可以将字符串绑定到模型吗?基本上,我有一个通过telnet连接到第三方设备的命令行界面。我正在构建一个web服务,以便将此CLI公开给外部应用程序。通过telnet发出命令后,我得到一个响应字符串,需要将其解析为一个模型 例如: /> echosnd -if 1 -dn 5551234567 Echo Sounder Test created on Interface CITYCOTTNNN-5ES, Resource 12 with

除了自己编写一堆样板代码进行绑定之外,还有什么优雅的方法可以将字符串绑定到模型吗?基本上,我有一个通过telnet连接到第三方设备的命令行界面。我正在构建一个web服务,以便将此CLI公开给外部应用程序。通过telnet发出命令后,我得到一个响应字符串,需要将其解析为一个模型

例如:

/> 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; }
}
公共类ConfigureTestResponse
{
[CLIResponse(RegEx=“接口(?[a-zA-Z0-9]*”)]
公共字符串接口{get;set;}
[CLIResponse(RegEx=“Resource(?[0-9]*)”)
公共int资源{get;set;}
[CLIResponse(RegEx=“#”(?[0-9]*)”)
公共int TestId{get;set;}
}
首先,我创建了CLIResponseAttribute来保存该属性的正则表达式过滤器(尽管上面的过滤器很可能不起作用-我将它们插入以进行说明,只测试了TestId[一点])。我可以使用正则表达式将它们拆分为组,并以这种方式设置属性,但我需要处理一系列转换(int32、int64、十进制、字符串、复杂模型等)基于属性类型。我希望有某种绑定,我可以提供一个名称/值对,它可以进行适当的绑定-或者更好的绑定

有类似的吗?我想使用MVC DefaultModelBinder,但是使用它会有很大的开销。处理复杂类型(和列表)会很好我不想做的是为每个命令编写特定的解析器,因为每个命令返回的结果格式略有不同

谢谢


(编辑:我想将正则表达式移动到类的一个属性中,以便能够对字符串进行IsMatch。使用组,我假设我仍然可以将输出绑定到属性。)

不,没有什么魔法可以帮你做到这一点。最好开始吧!)