c# – 从磁盘上的.cs类文件中获取属性
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 从磁盘上的.cs类文件中获取属性,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2045字,纯文字阅读大概需要3分钟。
内容图文
![c# – 从磁盘上的.cs类文件中获取属性](/upload/InfoBanner/zyjiaocheng/789/be6788e823a443a2ba8bbfeae9f855f1.jpg)
我正在为Visual Studio编写VSIX扩展.使用该插件,用户可以从VS中的解决方案资源管理器中选择一个类文件(因此磁盘上的某个实际.cs文件),然后通过上下文菜单项触发我的VSIX代码,对该文件执行某个操作.
我的VSIX扩展需要知道所选类文件的公共和内部属性.
我试图通过使用正则表达式解决这个问题,但我有点坚持它.我无法弄清楚如何只获取类的属性名称.它现在发现太多了.
这是我到目前为止的正则表达式:
\s*(?:(?:public|internal)\s+)?(?:static\s+)?(?:readonly\s+)?(\w+)\s+(\w+)\s*[^(]
演示:https://regex101.com/r/ngM5l7/1
从这个演示我想提取所有的属性名称,所以:
Brand,
YearModel,
HasRented,
SomeDateTime,
Amount,
Name,
Address
PS.我知道正则表达式不适合这种工作.但我认为我没有VSIX扩展中的任何其他选项.
解决方法:
how to only get the property names of the class.
此模式已注释,因此请使用IgnorePatternWhiteSpace作为选项或删除所有注释并连接到一行.
但是,此模式会获取您在示例中提供的所有数据.
(?>public|internal) # find public or internal
\s+ # space(s)
(?!class) # Stop Match if class
((static|readonly)\s)? # option static or readonly and space.
(?<Type>[^\s]+) # Get the type next and put it into the "Type Group"
\s+ # hard space(s)
(?<Name>[^\s]+) # Name found.
>找到六场比赛(见下文).
>从命名匹配捕获(?< Named> …)中提取数据,例如mymatch.Groups [“Named”].值或硬整数.
>在这种情况下,“类型”和“名称”是组名称或索引或具有硬提取.
>将在注释掉的部分中找到模式.
我的工具(为自己创建)报告了这些匹配和组:
Match #0
[0]: public string Brand
["Type"] → [1]: string
["Name"] → [2]: Brand
Match #1
[0]: internal string YearModel
["Type"] → [1]: string
["Name"] → [2]: YearModel
Match #2
[0]: public List<User> HasRented
["Type"] → [1]: List<User>
["Name"] → [2]: HasRented
Match #3
[0]: public DateTime? SomeDateTime
["Type"] → [1]: DateTime?
["Name"] → [2]: SomeDateTime
Match #4
[0]: public int Amount;
["Type"] → [1]: int
["Name"] → [2]: Amount;
Match #5
[0]: public static string Name
["Type"] → [1]: string
["Name"] → [2]: Name
Match #6
[0]: public readonly string Address
["Type"] → [1]: string
["Name"] → [2]: Address
内容总结
以上是互联网集市为您收集整理的c# – 从磁盘上的.cs类文件中获取属性全部内容,希望文章能够帮你解决c# – 从磁盘上的.cs类文件中获取属性所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。