我正在创建一种构建自动化的方法,该方法将允许用户通过自由形式的文本框输入命令,这些文本框具有类似于intellisense的自动完成的伪IDE功能。首先,我要定义相当于一个字符串列表的字符串,这些字符串充当定义模板,这些模板将用于从我的应用程序的用户收集参数。例如,示例模板如下所示:
var scriptTemplate = "show message '{v_Message}' and close after {v_AutoClose} seconds"
因此,以上是我的应用程序期望找到的已定义模式。我预计将遍历如下所示的文本框数据(快乐路径)
"show message 'hello world!' //textbox1.Text
或
"show message 'hello world' and close after 4 seconds" //textbox1.Text
因此,现在,我正在构建一种方法来获取用户的输入,将其与已知模板进行比较,选择一个模板,然后提取参数(在这种情况下,v_Message
和可能 v_AutoClose
)并实例化一个类,该类将包含一些执行命令的逻辑:
var newClassInstance = new CustomMessage();
newClassInstance.v_Message = "hello world";
//newClass.v_AutoClose = 4;
newClassInstance.Execute();
我被困在需要提取已知参数并将其应用于类的部分,因为我不确定实现此目的的最佳方法。我能够使用前两个单词“ reserved”关键字来选择正确的模板,但是提取参数并将其应用于课程的最佳方法是什么?我正在尝试针对100种不同的潜在模板进行此操作。
答案 0 :(得分:0)
我遇到了类似的需求类型,其中我有两个表,其中一列描述了“ TitleOfCampus”,其中一个表是主数据,第二个是新数据(您的表单数据)。 我需要做的就是将新数据映射到主表(您的模板表)中的匹配数据。
我从新数据(TitleOfCampus)中获取每个条目,通过如下破坏TitleOfCampus中的字符串值来过滤主表,
根据获得的结果,最后根据过滤器值TitleOfCampus的第一个字母对匹配的主表信息进行排序,因此最上面的数据是最适合映射的信息。示例代码如下
List<MyTemplate> templateDetails = new List<MyTemplate>
//Your filter code
templateDetails.AddRange(actualFullStringMatchResults);
foreach(var item in searchKeyword.ToString().Split(" "))
{
//Your filter code
templateDetails.AddRange(eachKeyWordMatchResults);
}
//Remove duplicate
templateDetails= templateDetails.DistinctBy(x => x.TempalteID).ToList();
//Set topmost value as most releavant one
templateDetails.OrderByDescending(i => i.TitleOfCampus[0] == fullStringFilter[0]).ToList();
我希望这个概念能解决您的要求。在规定的时间内自动关闭模板不是重点,但显示正确的模板很重要。