Согласно правилу SA1201 в StyleCop элементы класса должны располагаться в правильном порядке.
Порядок следующий:
Fields
Constructors
Finalizers (Destructors)
Delegates
Events
Enums
Interfaces
Properties
Indexers
Methods
Structs
Classes
Все в порядке, кроме части интерфейсов, потому что интерфейс может содержать методы, события, свойства и т. д.
Если мы хотим быть строгими в отношении этого правила, то у нас не будет всех членов интерфейса в одном месте, что часто очень полезно. Согласно справке StyleCop, эту проблему можно решить, разбив класс на частичные классы.
Пример:
/// <summary>
/// Represents a customer of the system.
/// </summary>
public partial class Customer
{
// Contains the main functionality of the class.
}
/// <content>
/// Implements the ICollection class.
/// </content>
public partial class Customer : ICollection
{
public int Count
{
get { return this.count; }
}
public bool IsSynchronized
{
get { return false; }
}
public object SyncRoot
{
get { return null; }
}
public void CopyTo(Array array, int index)
{
throw new NotImplementedException();
}
}
Есть ли другие хорошие решения этой проблемы?