是否可以同时将属性应用于类和程序集?

时间:2016-12-14 02:07:53

标签: c# .net unity3d .net-assembly

我需要尽快找到给定程序集中[MyAttribute]的所有类型。显然,后备是使用GetTypes并在每个上面检查IsDefined,但我正在寻找加速它的方法,因为这些代码将在每次加载时运行多个程序集(在Unity中这意味着每次用户修改脚本)。

我想出了两个可能的解决方案:

  1. 创建一个包含方法的程序集属性,该方法使用GetTypes和IsDefined构建一个声明该属性的字符串,如:[assembly: AssemblyContains(new Type[] { typeof(TypeA), typeof(TypeB), ...,然后记录该字符串,以便将其复制到程序集的其中一个源文件中。
  2. 制作一个需要与MyAttribute的每个实例一起声明的汇编属性,如:[assembly: AssemblyContains(typeof(MyClass))] [MyAttribute] public class MyClass { ... }
  3. 我希望#1的效率会更高一些,但使用起来会更费劲,而且在添加新类时很容易忘记更新它,所以我倾向于#2。

    所以我的问题是:#2是一个很好的解决方案和/或你能建议一个更好的方法吗?

0 个答案:

没有答案