2011-12-28 50 views

回答

1

因爲Pen標識沒有關聯Pens類由一個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

我認爲他們都是完全相同的冗餘量,即:完全:)只是方便/詳細的方面。 – 2011-12-28 02:22:48