如何在 C# 中生成这样的类?
我在一个项目中有多个类,除了类名之外,它们完全相同。基本上,它们代表在运行时从配置文件加载的美化枚举。这些类看起来像这样:
public class ClassName : IEquatable<ClassName> {
public ClassName(string description) {
Description = description;
}
public override bool Equals(object obj) {
return obj != null &&
typeof(ClassName).IsAssignableFrom(obj.GetType()) &&
Equals((ClassName)obj);
}
public bool Equals(ClassName other) {
return other != null &&
Description.Equals(other.Description);
}
public override int GetHashCode() {
return Description.GetHashCode();
}
public override string ToString() {
return Description;
}
public string Description { get; private set; }
}
我认为没有理由复制此文件并多次更改类名。当然有一种方法可以让我列出我想要的类并自动为我创建它们。如何?
I have multiple classes in a project that are exactly the same except for the name of the class. Basically, they represent glorified enums loaded at runtime from config files. The classes look like this:
public class ClassName : IEquatable<ClassName> {
public ClassName(string description) {
Description = description;
}
public override bool Equals(object obj) {
return obj != null &&
typeof(ClassName).IsAssignableFrom(obj.GetType()) &&
Equals((ClassName)obj);
}
public bool Equals(ClassName other) {
return other != null &&
Description.Equals(other.Description);
}
public override int GetHashCode() {
return Description.GetHashCode();
}
public override string ToString() {
return Description;
}
public string Description { get; private set; }
}
I see no reason to copy this file and change the class name multiple times. Surely there's a way I can just list what classes I want and have them automatically created for me. How?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我建议使用T4。与代码片段相比,它的一个显着优点是,如果您更改模板,那么所有代码都将更新以匹配。
将其放入扩展名为
.tt
的文件中,VS 将为您生成一个源文件。当您需要新类时,只需添加到数组
classes
中即可。I'd suggest using T4. A substantial advantage of this over code snippets is that if you change your template then all of your code will be updated to match.
Put this in a file with the extension
.tt
VS will generate a source file for you. Just add to the array
classes
when you need a new class.您可以将继承与泛型一起使用吗?
然后你可以像这样继承:
Could you use inheritance with generics?
Then you could inherit like this:
您是否考虑过代码片段?
Have you considered code snippets?
如果类确实完全相同,您可以使用继承吗?代码量非常小,并且不需要任何额外的前/后处理。
注意:如果您需要更改某些内容,所有代码片段建议似乎都将是维护过程中的噩梦。
If the classes really are the exact same, could you just use inheritance? The amount of code is pretty small and it doesn't require any extra pre/post processing.
NOTE: All of the code snippet suggestions seem like they would be a maintenance nightmare down the road if you needed to change something.
我建议您自己创建代码片段,这样既快速又简单。
I would suggest you to create code snippet yourself, that will be quick and easy.