Postsharp - 应用程序设置配置检查

时间:2016-07-26 21:01:56

标签: c# postsharp

我创建了一个PostSharp方面,当app.config文件中的密钥不存在时抛出编译错误,但ConfigurationManager.AppSettings.HasKeys()返回" false"当我在CompileTimeValidate方法中检查它。可以帮我?谢谢!

[Serializable]
public class ConfigurationValueRequiredAttribute : MethodInterceptionAspect
{
    // Method invoked at build time. It validates that the aspect has been applied to an acceptable method.
    public override bool CompileTimeValidate(MethodBase method)
    {
        bool valid = true;

        if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["Test"]))
        {

            Message.Write(SeverityType.Error, "CUSTOM02", "Test not exists!");
            valid = false;
        }

        return valid;
    }
}

1 个答案:

答案 0 :(得分:1)

PostSharp编译时检查是它自己独立的过程。它没有在您的应用程序的上下文中运行,也没有加载或读取您的app.config。

要确认,我在测试类中使用了您的属性并收到错误消息,"测试不存在!"

然后我添加了这个 C:\ ProgramData \ PostSharp \ 4.2.29 \ bin.Release \ postsharp-net40 86 srv.exe.config

<appSettings>
  <add key="test" value="123"/>
</appSettings>

......再次建造,错误消失了。这是他正在阅读的.config文件。