我需要尽快找到给定程序集中[MyAttribute]的所有类型。显然,后备是使用GetTypes并在每个上面检查IsDefined,但我正在寻找加速它的方法,因为这些代码将在每次加载时运行多个程序集(在Unity中这意味着每次用户修改脚本)。
我想出了两个可能的解决方案:
[assembly: AssemblyContains(new Type[] { typeof(TypeA), typeof(TypeB), ...
,然后记录该字符串,以便将其复制到程序集的其中一个源文件中。 [assembly: AssemblyContains(typeof(MyClass))] [MyAttribute] public class MyClass { ... }
。我希望#1的效率会更高一些,但使用起来会更费劲,而且在添加新类时很容易忘记更新它,所以我倾向于#2。
所以我的问题是:#2是一个很好的解决方案和/或你能建议一个更好的方法吗?