处理返回新对象的多个属性

时间:2017-06-23 20:37:37

标签: c# .net c#-4.0 properties itext

我的项目中有很多属性(大约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 值。每个属性都会生成不同的颜色。

2 个答案:

答案 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];