gpt4 book ai didi

c# - 在编译时循环遍历类中的所有对象 C#

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:02 26 4
gpt4 key购买 nike

我需要在编译时连接类中的所有属性以构建字符串。我见过类似的问题,但它们都是在处理运行时场景。基本上,我有一千个属性,并且不想再手动列出它们。我知道使用反射来使用 typeof(X).getProperties(...),但我不希望在运行时使用反射执行此操作不会影响性能。有没有一种方法可以让我遍历我的类中的所有属性来制作一个包含我所有属性的字符串?

    Class1 : SomeInterface
{
int1;
int2;
...
int1000;
string stringOfAllProperties;

public getAllPropertiesAsString()
{
return stringOfAllProperties = int1+int2+int3...;
}
}

最佳答案

正如其他人所提到的,如果您有上千个属性,您可能会遇到设计问题。解决该设计问题将是我的第一选择,但如果那不是一个选择...

Visual Studio 通过 T4 templates 支持编译时(或者更准确地说:保存时)代码生成,也就是说,你可以这样做:

<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ output extension=".cs" #>

class MyClass
{
<# var properties = new string [] {"int1", "int2", "int3", ...}; #>

<# foreach (string property in properties) { #>
private int <#= propertyName #>;
<# } #>

public string getAllPropertiesAsString()
{
return ""
<# foreach (string property in properties) { #>
+ <#= propertyName #>;
<# } #>
}
}

请注意,您必须在 Visual Studio 2017 安装期间安装“Visual Studio 扩展开发”工作负载。

关于c# - 在编译时循环遍历类中的所有对象 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52170339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com