我的项目中有很多属性(大约20个),这些属性正在返回同一个类'新对象(传递了不同的参数),因此代码看起来多余。是否有任何方法或设计模式可以减少代码量并执行相同的操作。我做了搜索和尝试,但无法找到任何。我的代码就像:
public MyClass Prop1
{
get
{
return new MyClass(0, 0);
}
}
public MyClass Prop2
{
get
{
return new MyClass(0, 1);
}
}
public MyClass Prop3
{
get
{
return new MyClass(1, 1);
}
}
public MyClass Prop4
{
get
{
return new MyClass(2, 4);
}
}
任何帮助将不胜感激。感谢。
修改
我使用 iTextSharp 生成PDF,我将传递不同的颜色,因此我创建了所需颜色的属性并使用它们同时生成PDF。
此处MyClass
是 iTextSharp 的BaseColor
类,传递的参数是 RGB 值。每个属性都会生成不同的颜色。
答案 0 :(得分:2)
使其看起来更干净的一种方法是使用内联属性
public MyClass Prop1 => new MyClass(0, 0);
public MyClass Prop2 => new MyClass(0, 1);
public MyClass Prop3 => new MyClass(1, 1);
public MyClass Prop4 => new MyClass(2, 4);
它会让它看起来更清晰,按照@John的建议创建一个数组可以工作,但是你需要记住你有多少属性,而且它在intellisense中没有显示。更好的选择可能实际上是
public MyClass Prop1 { get; } = new MyClass(0, 0);
public MyClass Prop2 { get; } = new MyClass(0, 1);
public MyClass Prop3 { get; } = new MyClass(1, 1);
public MyClass Prop4 { get; } = new MyClass(2, 4);
答案 1 :(得分:1)
任何时候你都有名字中包含数字的变量或属性,这就是代码气味。看看你是否可以用数组替换。
示例:
class Example
{
static private readonly MyClass[] _myClasses;
static public Example()
{
_myClasses= new MyClass[] { new MyClass(0,0),
new MyClass(0,1),
new MyClass(1,1),
new MyClass(2,4) };
}
public MyClass[] Prop
{
get
{
return _myClasses;
}
}
}
然后使用该属性,而不是调用
var c = example.Prop1;
使用
var c = example.Prop[0];