【发布时间】:2017-06-05 06:53:40
【问题描述】:
我创建了一个自定义属性,当附加到一个方法时,会导致该方法被反射调用。但是,我收到代码分析警告,表明该方法没有上游调用者(它是私有的,因为我不希望有任何其他调用它)。
显然我可以很容易地抑制它,但它确实使代码文件变得混乱。对于具有此属性的任何方法,是否有任何方法可以自动抑制此警告?
例如:
public class ArbitraryClass
{
[RunOnStartUp]
private static void RunThisOnStartup()
{
// Do some important stuff that can only be done on startup.
}
}
public static class Program
{
public static void Main()
{
AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(assembly => assembly.GetTypes())
.SelectMany(type => type.GetMethods(BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.NonPublic))
.Where(method => method.GetCustomAttribute<RunOnStartupAttribute>() != null)
.ToList()
.ForEach(method => method.Invoke(null, new object[0]));
// Start up the main form etc.
}
}
(是的,我知道在这种情况下我可能只使用静态初始化程序,但“启动时”并不是我使用它的唯一情况)。
【问题讨论】:
-
this 看起来很有希望,但不是很舒服
标签: c# .net reflection code-analysis custom-attributes