Расширение класса DataSet не работает - PullRequest
0 голосов
/ 10 мая 2011

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

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

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

Ответы [ 2 ]

1 голос
/ 10 мая 2011

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

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

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


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


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

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

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

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

0 голосов
/ 11 мая 2011

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

Существует 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
...