C#自定义属性 - 如何验证构造函数的参数?

时间:2017-09-05 20:21:46

标签: c# attributes

我有一个自定义属性,为方法定义了一些应用程序版本:

[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);
    }
}

可以使用字符串表示来初始化Version类的实例: “MAJOR.MINOR [.build [.revision]]”

现在我可以指定任何字符串作为参数,只有在使用Reflection方法执行此代码时,才能获得由解析错误引起的运行时异常:

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

有没有办法在代码编辑器中突出显示验证此值? 就像它适用于 AssemblyVersionAttribute 一样,版本格式的字符串与参数相同。它可以在文件 Properties \ AssemblyInfo.cs 中找到。

[assembly: AssemblyVersion("1.0.904.2")]

如果我试图超过该值,则此刺痛将在设计时突出显示为错误。

1 个答案:

答案 0 :(得分:0)

这可以通过编写自己的自定义Visual Studio分类器扩展(https://msdn.microsoft.com/en-us/library/dd885492.aspx)来完成。