是否有任何優雅的方式來綁定字符串到模型,短的寫一堆樣板代碼來做自己的綁定?基本上我有一個通過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使用組,我認爲我仍然可以與輸出到屬性綁定)