Расширение класса DataSet не работает

#.net #partial-classes #dataset-designer

#.net #частичные классы #dataset-дизайнер

Вопрос:

Я создал набор данных с помощью конструктора наборов данных. Вызывается одна из моих таблиц Users , и поэтому существует класс с именем UsersDataTable . В этом классе есть некоторые свойства, а именно Connection . Итак, я создал Partial Class UsersDataTable , но ни одна из подпрограмм, свойств или переменных из UsersDataTable класса в файле designer codebehind мне не видна.

Я просто пытаюсь расширить класс, чтобы добавить свои собственные процедуры, но использовать соединения и строгую типизацию класса, созданного дизайнером. Я пытался создать свои собственные частичные классы и протестировать их, чтобы увидеть, есть ли у меня проблемы с другими классами, но у меня их нет. Только с помощью этих классов, созданных дизайнером dataset, я не могу получить доступ к элементам в другой половине частичного класса.

Я работаю в .Net 4. Что я могу делать неправильно?

Ответ №1:

Все «частичные» классы должны быть объявлены как таковые, чтобы этот метод работал, и я предполагаю, что конструктор наборов данных Visual Studio не генерирует частичные классы:

http://msdn.microsoft.com/en-us/library/wa80x488 (v = VS.100).aspx

Возможно, вместо этого вам потребуется наследовать от классов, созданных дизайнером.


РЕДАКТИРОВАТЬ: Только что просмотрел некоторые классы DataSet, созданные VS2010, и они действительно являются частичными, поэтому, предполагая, что вы используете .NET 4, ваш тоже должен быть частичным. Я продолжу расследование.


ДАЛЬНЕЙШЕЕ РЕДАКТИРОВАНИЕ:

Хорошо, поскольку дизайнер создает классы *DataTable как вложенные классы внутри класса, который наследуется от DataSet, возможно, вам потребуется сделать то же самое в вашем частичном классе:

 public partial class UsersData
{
    public partial class UsersDataTable
    {
        public string Foo { get; set; }
    }
}
  

Кажется, у меня это работает.

Комментарии:

1. Действительно, мои частично. Я ценю, что вы проводите расследование. Если пример кода поможет, я могу кое-что предоставить.

2. Обратите внимание, что _connection в Partial Public Class UsersTableAdapter есть закрытая переменная. Можете ли вы получить доступ к этой переменной из своего частичного класса?

Ответ №2:

Кажется, что я только что расширил свой класс, используя неправильные идентификаторы:

Существует Namespace и внутри пространства имен находится Partial Public Class . Поэтому мой код:

 Partial Public Class myData
    Partial Public Class UsersTableAdapter
        Public Function DoSomething() As String
            Return "Testing..."
        End Function
    End Class
End Class
  

ошибка…Что мне было нужно, так это:

 Namespace myDataTableAdapters
    Partial Public Class UsersTableAdapter
        Public Function DoSomething() As String
            Return "Testing..."
        End Function
    End Class
End Namespace