我们的软件有几个类,应该通过反射来动态找到。这些类都有一个带有特定签名的构造函数,反射代码通过该签名实例化对象。
但是,当有人检查是否引用了该方法时(例如,通过Visual Studio Code Lens),则不计入通过反射进行的引用。人们可能会错过他们的引用,并删除(或更改)表面上未使用的方法。
我们应该如何标记/记录打算通过反射调用的方法?
理想情况下,应以同事和Visual Studio / Roslyn以及其他自动化工具都“看到”该方法旨在通过反射调用的方式进行标记。
我知道我们可以使用两个选项,但都不太令人满意。由于Visual Studio找不到引用,因此:
- 使用自定义属性,并使用此属性标记构造函数。
- 问题在于,属性属性不能是方法引用,因此构造方法仍将显示为具有0个引用。
- 不熟悉custom属性的同事可能会忽略它。
- 我当前方法的一个优点是反射部分可以使用该属性来查找应调用的构造函数。
- 使用注释来证明打算通过反射调用方法/构造函数。
- 自动化工具会忽略评论(同事也可能会忽略评论)。
- XML文档注释可以用于具有Visual Studio计数的额外参考方法/构造:
让MyPlugin
是它的构造经由反射调用的类。假设调用反射代码搜索采用int
参数的构造函数。以下文档使代码透镜显示了具有1个引用的构造函数:
/// <see cref="MyPlugin.MyPlugin(int)"/> is invoked via reflection
存在哪些更好的选择?
标记要通过反射调用的方法/构造函数的最佳实践是什么?