在AssemblyInfo.cs中看到一些代码片段,如
[assembly: someattributename]
这段代码是什么意思?
我甚至在组装中看到了一些方法,比如
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
这是属性吗?
答案 0 :(得分:16)
属性始终应用于元素(例如方法,属性)。 “assembly:”前缀表示属性(使用“ * ”省略的部分)为applied to the assembly。
在程序集级别应用属性如果要在程序集级别应用属性,请使用Assembly关键字。以下代码显示在程序集级别应用的AssemblyNameAttribute。
using System.Reflection; [assembly:AssemblyTitle("My Assembly")]
应用此属性时,字符串“MyAssembly”将放置在文件元数据部分的程序集清单中。您可以使用MSIL反汇编程序(Ildasm.exe)或通过创建自定义程序来检索属性来查看属性。
答案 1 :(得分:8)
这意味着这是一个attribute on the assembly itself而不是特定的类,方法,属性等。
答案 2 :(得分:6)
assembly:
就是所谓的属性目标。它指定该属性适用于程序集本身,而不适用于程序集中的任何类型。其他一些属性定位是module
,return
和param
。
答案 3 :(得分:3)
这些是装配属性,如here所述。
例如,它们构成了程序集(或:可执行文件)的版本信息。
答案 4 :(得分:2)
关于此程序集的一般信息通过这组属性进行控制。
此Link
中显示了一个简单的解释答案 5 :(得分:1)
到答案的第二个(已编辑)部分:
不,这不是方法调用。 log4net.Config.XmlConfigurator
也是log4net定义的attribute。 (有关log4net的详细信息,请参阅documentation。)其确切声明为
public class XmlConfiguratorAttribute : ConfiguratorAttribute
在这种情况下,有点误导的是属性命名约定。这意味着当您使用属性(甚至在程序集级别)时,您可以从属性类名称中留下Attribute
后缀。