gpt4 book ai didi

visual-studio - 如何基于另一个类生成代码?

转载 作者:行者123 更新时间:2023-12-04 04:27:22 27 4
gpt4 key购买 nike

为了创建测试数据,我们使用了Builder模式的以下变体(简化示例!):

范例类别:

public class Person
{
public string Name { get; set; }
public string Country { get; set; }
}

builder :
public class PersonBuilder
{
private string name;
private string country;

public PersonBuilder()
{
SetDefaultValues();
}

private void SetDefaultValues()
{
name = "TODO";
country = "TODO";
}

public Person Build()
{
return new Person
{
Name = name,
Country = country
};
}

public PersonBuilder WithName(string name)
{
this.name = name;
return this;
}

public PersonBuilder WithCountry(string country)
{
this.country = country;
return this;
}
}

注意:示例本身的上下文不相关。这里重要的是在示例中,如何通过查看实体类(Person)并应用相同的模式来完全生成诸如PersonBuilder之类的构建器类-参见下文。

现在,假设person类具有15个属性,而不是2个。要实现builder类,需要花些功夫,而从理论上讲,它可以从Person类自动生成。我们可以使用代码生成来快速设置构建器类,并在以后根据需要添加自定义代码。

代码生成过程必须要了解上下文(person类的名称和属性),因此简单的基于文本的代码生成或regex魔术在这里感觉不到。首选动态的解决方案,而不是基于文本的解决方案,并且可以从Visual Studio内部快速触发。

我正在寻找针对这种情况执行代码生成的最佳方法。
反射? Codesmith? T4模板?使用宏重新共享Live模板吗?

我期待看到一些很好的答案:)

最佳答案

T4解决方案是Visual Studio很好的集成选项。您可以在T4模板中使用反射来实际生成代码。

关于visual-studio - 如何基于另一个类生成代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5392552/

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