#.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