64 lines
1.0 KiB
Plaintext
64 lines
1.0 KiB
Plaintext
== Why is this an issue?
|
|
|
|
When defining custom attributes, ``++System.AttributeUsageAttribute++`` must be used to indicate where the attribute can be applied. This will determine its valid locations in the code.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,text]
|
|
----
|
|
using System;
|
|
|
|
namespace MyLibrary
|
|
{
|
|
|
|
public sealed class MyAttribute :Attribute // Noncompliant
|
|
{
|
|
string text;
|
|
|
|
public MyAttribute(string myText)
|
|
{
|
|
text = myText;
|
|
}
|
|
public string Text
|
|
{
|
|
get
|
|
{
|
|
return text;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,text]
|
|
----
|
|
using System;
|
|
|
|
namespace MyLibrary
|
|
{
|
|
|
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Delegate)]
|
|
public sealed class MyAttribute :Attribute
|
|
{
|
|
string text;
|
|
|
|
public MyAttribute(string myText)
|
|
{
|
|
text = myText;
|
|
}
|
|
public string Text
|
|
{
|
|
get
|
|
{
|
|
return text;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
----
|
|
|