2017-09-05 38 views
0

我有定義了一些應用程序版本的方法的自定義屬性:C#自定義屬性 - 如何驗證構造函數的參數?

[AttributeUsage(AttributeTargets.Method)] 
class ProjectConverterAttribute : Attribute 
{ 
    public Version BaseVersion { get; private set; } 
    public Version TargetVersion { get; private set; } 

    public ProjectConverterAttribute(string baseVersion, string targetVersion) 
    { 
     BaseVersion = new Version(baseVersion); 
     TargetVersion = new Version(targetVersion); 
    } 
} 

版類的實例可以用字符串表示進行初始化: 「MAJOR.MINOR [.build [.revision]] 「

現在我可以指定任何字符串作爲參數,並得到所致,只有當該代碼使用反射方法執行解析的錯誤運行時異常:

[ProjectConverter("1.0.1.215","1.0.1.R220")] 
bool Convert(Project project) 
{ 
} 

有沒有辦法在代碼編輯器中突出顯示驗證此值? 像它適用於AssemblyVersionAttribute使用相同版本格式的字符串作爲參數。它可以在文件Properties \ AssemblyInfo.cs中找到。

[assembly: AssemblyVersion("1.0.904.2")] 

如果我試圖超過這個值,這個刺會在設計時突出顯示爲一個錯誤。

+1

爲什麼你不使用單元測試呢? – Isma

+0

這是個好主意,謝謝!我會這麼做的。但同意,突出顯示更方便。 –

+0

不適合我,突出顯得很煩人,而且你也將自己綁定到visual studio(請記住.net核心是多平臺的)。我會去單元測試+持續集成,只要測試失敗,你就會知道。 – Isma

回答