2014-02-11 106 views
0

考慮以下代碼,是否有一種方法可以遍歷對象樹並確定所有具有進度,權重和總體成本的方法?您可以通過散步對象樹來閱讀註釋

比方說,我有一個自定義註釋:

public enum ProgressWeight 
    { 
    ExtraLight, 
    Light, 
    Medium, 
    Heavy, 
    ExtraHeavy 
    } 

    [AttributeUsage(AttributeTargets.Method)] 
    public class Progressable : Attribute 
    { 
    public ProgressWeight Weight { get; set; } 

    public Progressable(ProgressWeight weight) 
    { 
     this.Weight = weight; 
    } 
    } 

而且我要實現它是這樣:

public class Sumathig 
{ 
    Foo CompositionObject; 

    [Progressable(ProgressWeight.Light)] 
    public void DoSomethingLight() 
    { 
    \\Do something that takes little time 
    } 

    [Progressable(ProgressWeight.ExtraHeavy)] 
    public void DoSomeIntesiveWork() 
    { 
    CompositionObject = new Foo(); 
    CompositionObject.DoWork(); 
    CompositionObject.DoMoreWork(); 
    } 
} 

class Foo 
{ 
    [Progressable(ProgressWeight.Medium)] 
    public void DoWork() 
    { 
    \\Do some work 
    } 

    [Progressable(ProgressWeight.Heavy)] 
    public void DoSomeMoreWork() 
    { 
    \\Do more work 
    } 
} 
+0

你應該可以做到這一點,如果你要麼迭代類型的'類型'或'表達'的數組涉及......這似乎有點混亂。 – Magus

+0

在這種情況下,「註釋」是錯誤的詞。修復標記。他們是'屬性'。 –

+0

如果您有關於'type'(元數據)的信息,那麼您就可以獲得所有您需要的信息。使用反射。 –

回答

1

OPTION 1 - 註解

您提供的例子表明你應該看看:

這種方法使你這是在運行時檢索元數據來註釋你的代碼。整個過程相對簡單。對於反射的示例,看看:

附加讀取

選項2

另一種方法是贊成合成並將所需的元數據公開爲某個類的屬性。這可能適用於插件樣式體系結構。