У меня есть тип, который содержит коллекцию постоянных данных. Константы определяются стандартом, который определяется вне моей программы. Тип выглядит следующим образом:Есть ли способ сказать FxCop, что тип должен быть неизменным?
public class IAmImmutable
{
public IAmImmutable(string member1, string member2)
{
this.Member1 = member1;
this.Member2 = member2;
}
public string Member1 { get; private set; }
public string Member2 { get; private set; }
public static readonly Instance1 = new IAmImmutable("abc", "def");
public static readonly Instance2 = new IAmImmutable("example", "data");
public static readonly Instance3 = new IAmImmutable("for", "stackoverflow");
public static readonly Instance4 = new IAmImmutable("these are", "constant fields");
public static readonly Instance5 = new IAmImmutable("42", "1729");
/* ... */
public static readonly Instance1000 = new IAmImmutable("HUNGRY EVIL", "ZOMBIES");
}
Это приводит к тысячам CA2104:DoNotDeclareReadOnlyMutableReferenceTypes
обнаружений от FxCop. Примечания в этом обнаружении указывают на то, что следует подавлять обнаружение, если указанный тип является неизменным, что в этом случае. Тем не менее, я не хочу иметь тысячи и тысячи подавлений, если я могу избежать этого.
Можно ли пометить этот тип неизменным и, следовательно, предотвратить это обнаружение?
http://blogs.msdn.com/b/codeanalysis/archive/2006/04/04/faq-how-do-indicate-to-donotdeclarereadonlymutablereferencetypes-that-a-type-is-immutable-david -kean.aspx –
см. http://stackoverflow.com/questions/2274412/immutable-readonly-reference-types-fxcop-violation-do-not-declare-read-only-m –
@Peter: этот вопрос касается неизменяемый тип, который содержит внутренние изменяемые члены. У этого типа нет внутренних изменчивых членов. Если бы внутри был «StringBuilder», это был бы совсем другой вопрос. –