





{"id":1794,"date":"2011-03-18T23:41:46","date_gmt":"2011-03-19T03:41:46","guid":{"rendered":"http:\/\/www.killtest.hk\/?p=1794"},"modified":"2011-03-18T23:43:43","modified_gmt":"2011-03-19T03:43:43","slug":"attribute","status":"publish","type":"post","link":"https:\/\/www.killtest.hk\/index.php\/unix\/attribute\/","title":{"rendered":"C# \u7279\u6027\uff08Attribute\uff09\u5b78\u7fd2"},"content":{"rendered":"<p>\u7279\u6027\uff08attribute\uff09\u662f\u88ab\u6307\u5b9a\u7d66\u67d0\u58f9\u8072\u660e\u7684\u58f9\u5247\u9644\u52a0\u7684\u8072\u660e\u6027\u4fe1\u606f\u3002<br \/>\n\u00a0\u00a0\u00a0 \u5728C#\u4e2d\uff0c\u6709\u58f9\u500b\u5c0f\u7684\u9810\u5b9a\u7fa9\u7279\u6027\u96c6\u5408\u3002\u5728\u5b78\u7fd2\u5982\u4f55\u5efa\u7acb\u6211\u5011\u81ea\u5df1\u7684\u5b9a\u5236\u7279\u6027\uff08custom attributes\uff09\u4e4b\u524d\uff0c\u6211\u5011\u5148\u4f86\u770b\u770b\u5728\u6211\u5011\u7684\u4ee3\u78bc\u4e2d\u5982\u4f55\u4f7f\u7528\u9810\u5b9a\u7fa9\u7279\u6027\u3002<br \/>\n\u00a0\u00a0\u00a0 using System;<br \/>\n\u00a0\u00a0\u00a0 public class AnyClass<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 [Obsolete\uff08&#8221;Don&#8217;t use Old method, use New method&#8221;, true\uff09]<br \/>\n\u00a0\u00a0\u00a0 static void Old\uff08 \uff09 { }<br \/>\n\u00a0\u00a0\u00a0 static void New\uff08 \uff09 { }<br \/>\n\u00a0\u00a0\u00a0 public static void Main\uff08 \uff09<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 Old\uff08 \uff09\uff1b<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u6211\u5011\u5148\u4f86\u770b\u58f9\u4e0b\u4e0a\u9762\u9019\u500b\u4f8b\u5b50\uff0c\u5728\u9019\u500b\u4f8b\u5b50\u4e2d\u6211\u5011\u4f7f\u7528\u4e86Obsolete\u7279\u6027\uff0c\u5b83\u6a19\u8a18\u4e86\u58f9\u500b\u4e0d\u61c9\u8a72\u518d\u88ab\u4f7f\u7528\u7684\u7a0b\u5e8f\u5be6\u9ad4\u3002\u7b2c\u58f9\u500b\u53c3\u6578\u662f\u58f9\u500b\u5b57\u7b26\u4e32\uff0c\u5b83\u89e3\u91cb\u4e86\u70ba\u4ec0\u9ebd\u8a72\u5be6\u9ad4\u662f\u904e\u6642\u7684\u4ee5\u53ca\u61c9\u8a72\u7528\u4ec0\u9ebd\u5be6\u9ad4\u4f86\u4ee3\u66ff\u5b83\u3002\u5be6\u969b\u4e0a\uff0c\u59b3\u53ef\u4ee5\u5728\u9019\u88cf\u5beb\u4efb\u4f55\u6587\u672c\u3002\u7b2c\u4e8c\u500b\u53c3\u6578\u544a\u8a34\u7de8\u8b6f\u5668\u61c9\u8a72\u628a\u4f7f\u7528\u9019\u500b\u904e\u6642\u7684\u7a0b\u5e8f\u5be6\u9ad4\u7576\u4f5c\u58f9\u7a2e\u932f\u8aa4\u3002\u5b83\u7684\u9ed8\u8a8d\u503c\u662ffalse\uff0c\u4e5f\u5c31\u662f\u8aaa\u7de8\u8b6f\u5668\u5c0d\u6b64\u6703\u7522\u751f\u58f9\u500b\u8b66\u544a\u3002<br \/>\n\u00a0\u00a0\u00a0 \u7576\u6211\u5011\u5617\u8a66\u7de8\u8b6f\u4e0a\u9762\u9019\u6bb5\u7a0b\u5e8f\u7684\u6642\u5019\uff0c\u6211\u5011\u5c07\u6703\u5f97\u5230\u58f9\u500b\u932f\u8aa4\uff1a<br \/>\n\u00a0\u00a0\u00a0 AnyClass.Old\uff08\uff09&#8217; is obsolete: &#8216;Don&#8217;t use Old method, use New method&#8217;<br \/>\n\u00a0\u00a0\u00a0 \u958b\u767c\u5b9a\u5236\u7279\u6027\uff08custom attributes\uff09<br \/>\n\u00a0\u00a0\u00a0 \u73fe\u5728\u8b93\u6211\u5011\u4f86\u770b\u770b\u5982\u4f55\u958b\u767c\u6211\u5011\u81ea\u5df1\u7684\u7279\u6027\u3002<br \/>\n\u00a0\u00a0\u00a0 \u9996\u5148\u6211\u5011\u8981\u5f9eSystem.Attribute\u6d3e\u751f\u51fa\u6211\u5011\u81ea\u5df1\u7684\u7279\u6027\u985e\uff08\u58f9\u500b\u5f9eSystem.Attribute\u62bd\u8c61\u985e\u7e7c\u627f\u800c\u4f86\u7684\u985e\uff0c\u4e0d\u7ba1\u662f\u76f4\u63a5\u9084\u662f\u9593\u63a5\u7e7c\u627f\uff0c\u90fd\u6703\u6210\u70ba\u58f9\u500b\u7279\u6027\u985e\u3002\u7279\u6027\u985e\u7684\u8072\u660e\u5b9a\u7fa9\u4e86\u58f9\u7a2e\u53ef\u4ee5\u88ab\u653e\u7f6e\u5728\u8072\u660e\u4e4b\u4e0a\u65b0\u7684\u7279\u6027\uff09\u3002<br \/>\n\u00a0\u00a0\u00a0 using System;<br \/>\n\u00a0\u00a0\u00a0 public class HelpAttribute : Attribute<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u4e0d\u7ba1\u59b3\u662f\u5426\u76f8\u4fe1\uff0c\u6211\u5011\u5df2\u7d93\u5efa\u7acb\u4e86\u58f9\u500b\u5b9a\u5236\u7279\u6027\uff0c\u73fe\u5728\u6211\u5011\u53ef\u4ee5\u7528\u5b83\u4f86\u88dd\u98fe\u73fe\u6709\u7684\u985e\u5c31\u597d\u50cf\u4e0a\u9762\u6211\u5011\u4f7f\u7528Obsolete attribute\u58f9\u6a23\u3002<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08\uff09]<br \/>\n\u00a0\u00a0\u00a0 public class AnyClass<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u8a3b\u610f\uff1a\u5c0d\u58f9\u500b\u7279\u6027\u985e\u540d\u4f7f\u7528Attribute\u5f8c\u7db4\u662f\u58f9\u500b\u6163\u4f8b\u3002\u7136\u800c\uff0c\u7576\u6211\u5011\u628a\u7279\u6027\u6dfb\u52a0\u5230\u58f9\u500b\u7a0b\u5e8f\u5be6\u9ad4\uff0c\u662f\u5426\u5305\u62ecAttribute\u5f8c\u7db4\u662f\u6211\u5011\u7684\u81ea\u7531\u3002\u7de8\u8b6f\u5668\u6703\u9996\u5148\u5728System.Attribute\u7684\u6d3e\u751f\u985e\u4e2d\u67e5\u627e\u88ab\u6dfb\u52a0\u7684\u7279\u6027\u985e\u3002\u5982\u679c\u6c92\u6709\u627e\u5230\uff0c\u90a3\u9ebd\u7de8\u8b6f\u5668\u6703\u6dfb\u52a0Attribute\u5f8c\u7db4\u7e7c\u7e8c\u67e5\u627e\u3002<br \/>\n\u00a0\u00a0\u00a0 \u5230\u76ee\u524d\u70ba\u6b62\uff0c\u9019\u500b\u7279\u6027\u9084\u6c92\u6709\u8d77\u5230\u4ec0\u9ebd\u4f5c\u7528\u3002\u4e0b\u9762\u6211\u5011\u4f86\u6dfb\u52a0\u4e9b\u6771\u897f\u7d66\u5b83\u4f7f\u5b83\u66f4\u6709\u7528\u4e9b\u3002<br \/>\n\u00a0\u00a0\u00a0 using System;<br \/>\n\u00a0\u00a0\u00a0 public class HelpAttribute : Attribute<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 public HelpAttribute\uff08String Descrition_in\uff09<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 this.description = Description_in;<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 protected String description;<br \/>\n\u00a0\u00a0\u00a0 public String Description<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 get<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 return this.description;<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;this is a do-nothing class&#8221;\uff09]<br \/>\n\u00a0\u00a0\u00a0 public class AnyClass<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u5011\u7d66HelpAttribute\u7279\u6027\u985e\u6dfb\u52a0\u4e86\u58f9\u500b\u5c6c\u6027\u4e26\u4e14\u5728\u5f8c\u7e8c\u7684\u90e8\u5206\u4e2d\u6211\u5011\u6703\u5728\u904b\u884c\u6642\u74b0\u5883\u4e2d\u67e5\u5c0b\u5b83\u3002<br \/>\n\u00a0\u00a0\u00a0 \u5b9a\u7fa9\u6216\u63a7\u5236\u7279\u6027\u7684\u4f7f\u7528<br \/>\n\u00a0\u00a0\u00a0 AttributeUsage\u985e\u662f\u53e6\u5916\u58f9\u500b\u9810\u5b9a\u7fa9\u7279\u6027\u985e\uff0c\u5b83\u5e6b\u52a9\u6211\u5011\u63a7\u5236\u6211\u5011\u81ea\u5df1\u7684\u5b9a\u5236\u7279\u6027\u7684\u4f7f\u7528\u3002\u5b83\u63cf\u8ff0\u4e86\u58f9\u500b\u5b9a\u5236\u7279\u6027\u5982\u548c\u88ab\u4f7f\u7528\u3002<br \/>\n\u00a0\u00a0\u00a0 AttributeUsage\u6709\u4e09\u500b\u5c6c\u6027\uff0c\u6211\u5011\u53ef\u4ee5\u628a\u5b83\u653e\u7f6e\u5728\u5b9a\u5236\u5c6c\u6027\u524d\u9762\u3002\u7b2c\u58f9\u500b\u5c6c\u6027\u662f\uff1a<br \/>\n\u00a0\u00a0\u00a0 ValidOn<br \/>\n\u00a0\u00a0\u00a0 \u901a\u904e\u9019\u500b\u5c6c\u6027\uff0c\u6211\u5011\u80fd\u5920\u5b9a\u7fa9\u5b9a\u5236\u7279\u6027\u61c9\u8a72\u5728\u4f55\u7a2e\u7a0b\u5e8f\u5be6\u9ad4\u524d\u653e\u7f6e\u3002\u58f9\u500b\u5c6c\u6027\u53ef\u4ee5\u88ab\u653e\u7f6e\u7684\u6240\u6709\u7a0b\u5e8f\u5be6\u9ad4\u5728AttributeTargets enumerator\u4e2d\u5217\u51fa\u3002\u901a\u904eOR\u64cd\u4f5c\u6211\u5011\u53ef\u4ee5\u628a\u82e5\u5e79\u500bAttributeTargets\u503c\u7d44\u5408\u8d77\u4f86\u3002<br \/>\n\u00a0\u00a0\u00a0 AllowMultiple<br \/>\n\u00a0\u00a0\u00a0 \u9019\u500b\u5c6c\u6027\u6a19\u8a18\u4e86\u6211\u5011\u7684\u5b9a\u5236\u7279\u6027\u80fd\u5426\u88ab\u91cd\u5fa9\u653e\u7f6e\u5728\u540c\u58f9\u500b\u7a0b\u5e8f\u5be6\u9ad4\u524d\u591a\u6b21\u3002<br \/>\n\u00a0\u00a0\u00a0 Inherited<br \/>\n\u00a0\u00a0\u00a0 \u6211\u5011\u53ef\u4ee5\u4f7f\u7528\u9019\u500b\u5c6c\u6027\u4f86\u63a7\u5236\u5b9a\u5236\u7279\u6027\u7684\u7e7c\u627f\u898f\u5247\u3002\u5b83\u6a19\u8a18\u4e86\u6211\u5011\u7684\u7279\u6027\u80fd\u5426\u88ab\u7e7c\u627f\u3002<br \/>\n\u00a0\u00a0\u00a0 \u4e0b\u9762\u8b93\u6211\u5011\u4f86\u505a\u58f9\u4e9b\u5be6\u969b\u7684\u6771\u897f\u3002\u6211\u5011\u5c07\u6703\u5728\u525b\u624d\u7684Help\u7279\u6027\u524d\u653e\u7f6eAttributeUsage\u7279\u6027\u4ee5\u671f\u5f85\u5728\u5b83\u7684\u5e6b\u52a9\u4e0b\u63a7\u5236Help\u7279\u6027\u7684\u4f7f\u7528\u3002<br \/>\n\u00a0\u00a0\u00a0 using System;<br \/>\n\u00a0\u00a0\u00a0 [AttributeUsage\uff08AttributeTargets.Class\uff09\uff0c AllowMultiple = false,<br \/>\n\u00a0\u00a0\u00a0 Inherited = false ]<br \/>\n\u00a0\u00a0\u00a0 public class HelpAttribute : Attribute<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 public HelpAttribute\uff08String Description_in\uff09<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 this.description = Description_in;<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 protected String description;<br \/>\n\u00a0\u00a0\u00a0 public String Description<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 get<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 return this.description;<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u5148\u8b93\u6211\u5011\u4f86\u770b\u58f9\u4e0bAttributeTargets.Class\u3002\u5b83\u898f\u5b9a\u4e86Help\u7279\u6027\u53ea\u80fd\u88ab\u653e\u5728class\u7684\u524d\u9762\u3002\u9019\u4e5f\u5c31\u610f\u5473\u8457\u4e0b\u9762\u7684\u4ee3\u78bc\u5c07\u6703\u7522\u751f\u932f\u8aa4\uff1a<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;this is a do-nothing class&#8221;\uff09]<br \/>\n\u00a0\u00a0\u00a0 public class AnyClass<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;this is a do-nothing method&#8221;\uff09] \/\/error<br \/>\n\u00a0\u00a0\u00a0 public void AnyMethod\uff08\uff09<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u7de8\u8b6f\u5668\u5831\u544a\u932f\u8aa4\u5982\u4e0b\uff1a<br \/>\n\u00a0\u00a0\u00a0 AnyClass.cs: Attribute &#8216;Help&#8217; is not valid on this declaration type.<br \/>\n\u00a0\u00a0\u00a0 It is valid on &#8216;class&#8217; declarations only.<br \/>\n\u00a0\u00a0\u00a0 \u6211\u5011\u53ef\u4ee5\u4f7f\u7528AttributeTargets.All\u4f86\u5141\u8a31Help\u7279\u6027\u88ab\u653e\u7f6e\u5728\u4efb\u4f55\u7a0b\u5e8f\u5be6\u9ad4\u524d\u3002\u53ef\u80fd\u7684\u503c\u662f\uff1a<br \/>\n\u00a0\u00a0\u00a0 Assembly,Module,Class,Struct,Enum,Constructor,Method,Property,Field,Event,Interface,<br \/>\n\u00a0\u00a0\u00a0 Parameter,Delegate\u3002<br \/>\n\u00a0\u00a0\u00a0 All = Assembly | Module | Class | Struct | Enum | Constructor | Method | Property | Field | Event | Interface | Parameter | Delegate,<br \/>\n\u00a0\u00a0\u00a0 ClassMembers = Class | Struct | Enum | Constructor | Method | Property | Field | Event | Delegate | Interface \uff09<br \/>\n\u00a0\u00a0\u00a0 \u4e0b\u9762\u8003\u616e\u58f9\u4e0bAllowMultiple = false\u3002\u5b83\u898f\u5b9a\u4e86\u7279\u6027\u4e0d\u80fd\u88ab\u91cd\u5fa9\u653e\u7f6e\u591a\u6b21\u3002<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;this is a do-nothing class&#8221;\uff09]<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;it contains a do-nothing method&#8221;\uff09]<br \/>\n\u00a0\u00a0\u00a0 public class AnyClass<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;this is a do-nothing method&#8221;\uff09] \/\/error<br \/>\n\u00a0\u00a0\u00a0 public void AnyMethod\uff08\uff09<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u5b83\u7522\u751f\u4e86\u58f9\u500b\u7de8\u8b6f\u671f\u932f\u8aa4\u3002<br \/>\n\u00a0\u00a0\u00a0 AnyClass.cs: Duplicate &#8216;Help&#8217; attribute<br \/>\n\u00a0\u00a0\u00a0 Ok,\u73fe\u5728\u6211\u5011\u4f86\u8a0e\u8ad6\u58f9\u4e0b\u6700\u5f8c\u7684\u9019\u500b\u5c6c\u6027\u3002Inherited, \u8868\u660e\u7576\u7279\u6027\u88ab\u653e\u7f6e\u5728\u58f9\u500b\u57fa\u985e\u4e0a\u6642\uff0c\u5b83\u80fd\u5426\u88ab\u6d3e\u751f\u985e\u6240\u7e7c\u627f\u3002<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;BaseClass&#8221;\uff09]<br \/>\n\u00a0\u00a0\u00a0 public class Base<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 public class Derive : Base<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u9019\u88cf\u6703\u6709\u56db\u7a2e\u53ef\u80fd\u7684\u7d44\u5408\uff1a<br \/>\n\u00a0\u00a0\u00a0 [AttributeUsage\uff08AttributeTargets.Class, AllowMultiple = false, Inherited = false ]<br \/>\n\u00a0\u00a0\u00a0 [AttributeUsage\uff08AttributeTargets.Class, AllowMultiple = true, Inherited = false ]<br \/>\n\u00a0\u00a0\u00a0 [AttributeUsage\uff08AttributeTargets.Class, AllowMultiple = false, Inherited = true ]<br \/>\n\u00a0\u00a0\u00a0 [AttributeUsage\uff08AttributeTargets.Class, AllowMultiple = true, Inherited = true ]<br \/>\n\u00a0\u00a0\u00a0 \u7b2c\u58f9\u7a2e\u60c5\u6cc1\uff1a<br \/>\n\u00a0\u00a0\u00a0 \u5982\u679c\u6211\u5011\u67e5\u8a62\uff08Query\uff09\uff08\u7a0d\u5f8c\u6211\u5011\u6703\u770b\u5230\u5982\u4f55\u5728\u904b\u884c\u671f\u67e5\u8a62\u58f9\u500b\u985e\u7684\u7279\u6027\uff09Derive\u985e\uff0c\u6211\u5011\u5c07\u6703\u767c\u73feHelp\u7279\u6027\u4e26\u4e0d\u5b58\u5728\uff0c\u56e0\u70bainherited\u5c6c\u6027\u88ab\u8a2d\u7f6e\u70bafalse\u3002<br \/>\n\u00a0\u00a0\u00a0 \u7b2c\u4e8c\u7a2e\u60c5\u6cc1\uff1a<br \/>\n\u00a0\u00a0\u00a0 \u548c\u7b2c\u58f9\u7a2e\u60c5\u6cc1\u76f8\u540c\uff0c\u56e0\u70bainherited\u4e5f\u88ab\u8a2d\u7f6e\u70bafalse\u3002<br \/>\n\u00a0\u00a0\u00a0 \u7b2c\u4e09\u7a2e\u60c5\u6cc1\uff1a<br \/>\n\u00a0\u00a0\u00a0 \u70ba\u4e86\u89e3\u91cb\u7b2c\u4e09\u7a2e\u548c\u7b2c\u56db\u7a2e\u60c5\u6cc1\uff0c\u6211\u5011\u5148\u4f86\u7d66\u6d3e\u751f\u985e\u6dfb\u52a0\u9ede\u4ee3\u78bc\uff1a<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;BaseClass&#8221;\uff09]<br \/>\n\u00a0\u00a0\u00a0 public class Base<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 [Help\uff08&#8221;DeriveClass&#8221;\uff09]<br \/>\n\u00a0\u00a0\u00a0 public class Derive : Base<br \/>\n\u00a0\u00a0\u00a0 {<br \/>\n\u00a0\u00a0\u00a0 }<br \/>\n\u00a0\u00a0\u00a0 \u73fe\u5728\u6211\u5011\u4f86\u67e5\u8a62\u58f9\u4e0bHelp\u7279\u6027\uff0c\u6211\u5011\u53ea\u80fd\u5f97\u5230\u6d3e\u751f\u985e\u7684\u5c6c\u6027\uff0c\u56e0\u70bainherited\u88ab\u8a2d\u7f6e\u70batrue\uff0c\u4f46\u662fAllowMultiple\u537b\u88ab\u8a2d\u7f6e\u70bafalse\u3002\u56e0\u6b64\u57fa\u985e\u7684Help\u7279\u6027\u88ab\u6d3e\u751f\u985eHelp\u7279\u6027\u8986\u84cb\u4e86\u3002<br \/>\n\u00a0\u00a0\u00a0 \u7b2c\u56db\u7a2e\u60c5\u6cc1\uff1a<br \/>\n\u00a0\u00a0\u00a0 \u5728\u9019\u88cf\uff0c\u6211\u5011\u5c07\u6703\u767c\u73fe\u6d3e\u751f\u985e\u65e2\u6709\u57fa\u985e\u7684Help\u7279\u6027\uff0c\u4e5f\u6709\u81ea\u5df1\u7684Help\u7279\u6027\uff0c\u56e0\u70baAllowMultiple\u88ab\u8a2d\u7f6e\u70batrue\u3002<br \/>\n\u00a0\u00a0\u00a0 \u5b9a\u7fa9\u6216\u63a7\u5236\u7279\u6027\u7684\u4f7f\u7528<br \/>\n\u00a0\u00a0\u00a0 AttributeUsage\u985e\u662f\u53e6\u5916\u58f9\u500b\u9810\u5b9a\u7fa9\u7279\u6027\u985e\uff0c\u5b83\u5e6b\u52a9\u6211\u5011\u63a7\u5236\u6211\u5011\u81ea\u5df1\u7684\u5b9a\u5236\u7279\u6027\u7684\u4f7f\u7528\u3002\u5b83\u63cf\u8ff0\u4e86\u58f9\u500b\u5b9a\u5236\u7279\u6027\u5982\u548c\u88ab\u4f7f\u7528\u3002<br \/>\n\u00a0\u00a0\u00a0 AttributeUsage\u6709\u4e09\u500b\u5c6c\u6027\uff0c\u6211\u5011\u53ef\u4ee5\u628a\u5b83\u653e\u7f6e\u5728\u5b9a\u5236\u5c6c\u6027\u524d\u9762\u3002\u7b2c\u58f9\u500b\u5c6c\u6027\u662f\uff1a<br \/>\n\u00a0\u00a0\u00a0 ValidOn<br \/>\n\u00a0\u00a0\u00a0 \u901a\u904e\u9019\u500b\u5c6c\u6027\uff0c\u6211\u5011\u80fd\u5920\u5b9a\u7fa9\u5b9a\u5236\u7279\u6027\u61c9\u8a72\u5728\u4f55\u7a2e\u7a0b\u5e8f\u5be6\u9ad4\u524d\u653e\u7f6e\u3002\u58f9\u500b\u5c6c\u6027\u53ef\u4ee5\u88ab\u653e\u7f6e\u7684\u6240\u6709\u7a0b\u5e8f\u5be6\u9ad4\u5728AttributeTargets enumerator\u4e2d\u5217\u51fa\u3002\u901a\u904eOR\u64cd\u4f5c\u6211\u5011\u53ef\u4ee5\u628a\u82e5\u5e79\u500bAttributeTargets\u503c\u7d44\u5408\u8d77\u4f86\u3002<br \/>\n\u00a0\u00a0\u00a0 AllowMultiple<br \/>\n\u00a0\u00a0\u00a0 \u9019\u500b\u5c6c\u6027\u6a19\u8a18\u4e86\u6211\u5011\u7684\u5b9a\u5236\u7279\u6027\u80fd\u5426\u88ab\u91cd\u5fa9\u653e\u7f6e\u5728\u540c\u58f9\u500b\u7a0b\u5e8f\u5be6\u9ad4\u524d\u591a\u6b21\u3002<br \/>\n\u00a0\u00a0\u00a0 Inherited<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7279\u6027\uff08attribute\uff09\u662f\u88ab\u6307\u5b9a\u7d66\u67d0\u58f9\u8072\u660e\u7684\u58f9\u5247\u9644\u52a0\u7684\u8072\u660e\u6027\u4fe1\u606f\u3002 \u00a0\u00a0\u00a0 \u5728C#\u4e2d\uff0c\u6709\u58f9\u500b\u5c0f\u7684\u9810\u5b9a\u7fa9\u7279\u6027\u96c6 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[531],"tags":[749,739],"class_list":["post-1794","post","type-post","status-publish","format-standard","hentry","category-unix","tag-attribute","tag-c"],"_links":{"self":[{"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/posts\/1794","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/comments?post=1794"}],"version-history":[{"count":0,"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/posts\/1794\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/media?parent=1794"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/categories?post=1794"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.killtest.hk\/index.php\/wp-json\/wp\/v2\/tags?post=1794"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}