2011-12-28 2 views

答えて

1

Penが識別されるため、関連するPensクラスがありませんただ1つのプロパティではなくBrush and a Thicknessの両方によって。

(いくつかの厚さに基づいて)一連の標準ペンが必要な場合は、独自のペンを作成する必要があります。別のアプローチは、適切なペンを供給するためのコードジェネレータを作成することです。ここで

は、各デフォルトBrushについてPenを追加するクラスの例である:それは冗長になるので、

public class DefaultPens 
{ 
    private Dictionary<Brush, Pen> pens; 

    public double Thickness 
    { 
     get; 
     private set; 
    } 

    // used like defaultPens[Brushes.Red] 
    public Pen this[Brush brush] 
    { 
     get { return this.pens[brush]; } 
    } 

    public DefaultPens(double thickness) 
    { 
     this.pens = typeof(Brushes).GetProperties(BindingFlags.Static) 
            .Where(pi => pi.PropertyType == typeof(Brush)) 
            .Select(pi => pi.GetValue(null, null)) 
            .ToDictionary(
             b => b, 
             b => new Pen(b, thickness)); 
     this.Thickness = thickness; 
    } 
} 
1

Pensクラスがありません。(あなたは正しいですが、ColorsBrushesもやや冗長です)

なぜですか?さて、ペンのことを考えてみましょう。そのプロパティは、ストローク(または:の厚さ)と色(または:ブラシ)で記述することができます。したがって、Pen Constructor(Brush, double)があります。

+1

私はそれらがまったく同じ量の冗長であると思います。つまり、完全に:)利便性と冗長性の面だけがあります。 –

関連する問題