* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Создание класса строго типизированного набора на основе класса CollectionBase
8 февраля 2009
Сейчас вы создадите класс набора, который воспринимает и возвращает исключительно экземпляры класса Doughnut, объявив производный класс на основе класса CollectionBase из .NET Framework. Вы напишете реализа- цию для методов Add и Remove, а также для свойства Item, включив в нее код, обеспечивающий добавление к набору и извлечение из него только объектов типа Doughnut. Вы также модифицируете код приложения Doughnut Factory, чтобы оно могло использовать новый класс набора.
>• Создание класса строго типизированного набора 1. В меню Project выберите команду Add Class — откроется окно Add New Item. Назовите класс DoughnutCollection.vb или DoughnutCollection.es и щелкните (.Ж — откроется окно редактора кола с заготовкой нового класса. 2. Сделайте новый класс потомком System. Collections. CollectionBase, добавив к нему следующий код: Visual Basic .NET Public Class DoughnutCollection Inherits System.Collections.CollectionBase End Class Visual C# public class DoughtnutCollection : System.Collections.CollectionBase { ! 3. Создайте метод Add, который будет добавлять элементы к набору. Этот метод должен принимать объекты Doughnut в качестве параметра и вызывать метод Add внутреннего объекта List. Visual Basic .NET Public Sub Add(ByVal aDoughnut As DoughnutMachine. Doughnut) List.Add(aDoughnut) End Sub Visual C# public void Add(DoughnutMachine, Doughnut aDoughnut) { List.Add(aDoughnut); ! 4. Напишите доступный только для чтения индексатор (С#) или свойство по умол- чанию с именем Item (Visual Basic), возвращающее объект Doughnuts заданным индексом. Заметьте: элементы объекта List хранятся, как объекты типа Object, поэтому вам потребуется явно преобразовать привести элемент набора к типу Doughnut, прежде чем возвращать его. Это можно сделать так: Visual Basic .NET Default Public Readonly Property Itern(ByVal Index As Integer) Get Return CType( List. Item (Index). DoughnutMachine. Doughnut) End Get End Property Visual C# public DoughnutMachine. Doughnut this[int index] { get ! return (DoughnutMachine. Doughnut )Li$t[index]; 5. Напишите метод, который будет удалять из набора объект Doughnut. Этот метод должен принимать объект Doughnut, его следует реализовать как оболочку для метода List. Remove. Вот пример: Visual Basic .NET Public Sub Remove(ByVal aDoughnut As DoughnutMachine. Doughnut) Проверить, является ли заданный объект Doughnut членом набора If List.Contains(aDoughnut) - True Then Удалить заданный объект Doughnut List. Remove(aDoughnut) End If End Sub Visual C# public void RernoveCDoughnutMachine. Doughnut aDoughnut) ! if (List.Contains(aDoughnut) == true) { List. Rercove(aDoughnut); 6. Откройте код класса DoughnutMachine, найдите строку, в которой объявляется закрытая переменная mDoughnuts, и измените ее так, чтобы в ней можно было хранить экземпляр класса DoughnutCollection: Visual Basic .NET Private mDoughnuts As New DoughnutCollection() Visual C# private DoughnutCollection mDoughnuts = new DoughnutCollection(); 7. Измените свойство Doughnuts, чтобы оно получило возможность взаимодейство- вать с новым объектом DoughnutCollection, например, так: Visual Basic .NET Default Public Property Doughnuts(ByVal Index As Integer) As Doughnut Get Return mOoughnuts(Index) End Get SetfByVal Value As Doughnut) mDoughnuts. Add{ Value) End Set End Property Visual C# public Doughnut this[int Index] { get { return mDougnnuts[Index]; } set { rnDoughniJts.Add{ value): i