从输入字符串中获取属性名称作为字符串

笑话

我当前正在创建一个模块,该模块将使用C#中的Gembox.Document在Word中创建合并字段。首先,我只想说这是我已经完成的任务,因此无论这是做与否的坏方法,这都是他们想要的方法。

我有一个Windows窗体应用程序,其中有一个文本框和一个按钮。他们希望在文本框中粘贴dto /模型,例如:

"public class Example 
{
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Cellphone { get; set; }
    public string Address { get; set; }
    public string CompanyName { get; set; }
    public DateTime CurrentDate { get; set; }  
}"

我已经有了使用在其中传递包含所有合并字段名称的string []的方法向单词添加mergefields的逻辑。

问题是:我需要能够对这个大字符串进行子字符串化,使其上方包含一个在文本框中以字符串形式编写的dto / model,以获取属性名称并将其添加到中string[],因为它们将是合并字段名称。

我希望我能很好地解释自己。这是我的第一个问题,我不习惯用英语解释我的问题。

编辑:要指定问题:我需要从该字符串中获取属性名称,并将其放入string[]

string s = @"public string Name { get; set; }
  public string Surname { get; set; }
  public string Cellphone { get; set; }
  public string Address { get; set; }
  public string CompanyName { get; set; }
  public DateTime CurrentDate { get; set; }"
克劳迪乌斯·布莱雅莫斯(Claudius Bryjamus)

我认为也许您应该解析此文本(使用解析器而不是自己的解决方案),而不是搜索语法树以查找属性名称。我想到了类似的东西:

使用NRefactory分析C#代码

这段代码返回完整的树或错误(我使用NRefactory,但您可以使用Roslyn):

var parser = new CSharpParser();
var syntaxTree = parser.Parse(programCode);

而不是在syntaxTree字段中搜索属性。

示例代码:

const string code = @"public class Example {
    public string Name { get; set; }
    public string Surname { get; set; }
    public string Cellphone { get; set; }
    public string Address { get; set; }
    public string CompanyName { get; set; }
    public DateTime CurrentDate { get; set; }
}";
var syntaxTree = new CSharpParser().Parse(code, "program.cs");
var listOfPropertiesNames = syntaxTree.Children
    .SelectMany(astParentNode => astParentNode.Children)
    .OfType<PropertyDeclaration>()
    .Select(astPropertyNode => astPropertyNode.Name)
    .ToList();

此代码段提取属性名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获取对象属性名称作为字符串

获取动作名称作为属性参数的字符串

获取对象属性名称作为字符串

获取Swift类的属性名称作为字符串

如何从名称作为字符串访问 qml 属性?

动态属性名称作为字符串

使用属性名称作为字符串排序

获取Swift变量的实际名称作为字符串

如何获取变量名称作为字符串?

如何使用属性名称作为字符串获取属性值,例如 object["foo"]

值名称作为赋值函数中的字符串

变量名称作为Javascript中的字符串

Python词典:执行时如何获取输入字符串并以字典名称作为字符串中的单词来定义动态词典

在python中将变量名称作为原始字符串输入到请求中

在C ++中的静态方法中将类名称作为字符串获取

从类列表中获取被调用的方法的名称作为字符串

R:在R中获取以package :: function调用的函数名称作为字符串

在日期时间列中查找日期名称,用户输入为工作日名称作为“字符串”

按名称作为字符串引用 GUI 元素

将列名称作为字符串传递给with

反应元素名称作为字符串变量

通过名称作为字符串访问Java变量

如何获得函数名称作为字符串?

OCaml函数名称作为字符串

将按钮名称作为字符串传递

无法通过名称作为字符串访问对象

是否可以在mysql中将表本身的属性名称作为字符串传递?

JavaScript对象:按名称作为字符串访问变量属性

MongoDB 将字段名称作为字符串插入,而不是获取值