У меня есть два класса (это C#), которые очень похожи, за исключением того, что каждый из них содержит свой собственный вложенный класс и перечисление.Сокращение дублирования кода в двух классах с разными вложенными классами
Я хотел бы реорганизовать их как наследуемый из одного абстрактного класса, но я столкнулся с проблемой, потому что все методы тесно связаны с вложенными типами классов.
Мой первый план состоял в том, чтобы вытащить класс ItemDetails, но он связан с ItemType, который является перечислением, которое относится к каждому классу элемента представления. Кроме того, я не могу просто использовать System.Enum как тип, так как мне нужно иметь возможность сериализовать детали в XML-файл.
Как я могу уменьшить дублирование внутри этих классов?
public class FirstViewItem
{
[Serializable]
public class ItemDetails
{
public ItemType Type;
public int Width;
public string Text;
public int DisplayOrder;
}
public enum ItemType
{
None = 0,
A,
B,
C
}
public FirstViewItem()
{
// ...
}
public List<ItemDetails>()
{
// code here ...
}
}
public class SecondViewItem
{
[Serializable]
public class ItemDetails
{
public ItemType Type;
public int Width;
public string Text;
public int DisplayOrder;
}
public enum ItemType
{
None = 0,
X,
Y,
X
}
public SecondViewItem()
{
// ...
}
public List<ItemDetails>()
{
// code here ...
}
}
Это, вероятно, лучше всего подходит для [Просмотр Кода] (http://codereview.stackexchange.com/) ... –
я даже не знал, что существует ... красиво! – chills42