VB Частичный класс ... застрял! - PullRequest
1 голос
/ 23 ноября 2010

Я застрял при попытке создать простейший частичный класс для доступа к свойству таблицы.

У меня есть автоматически сгенерированный LINQ DataContext с:

Namespace VuBridgeDB
    <System.Data.Linq.Mapping.DatabaseAttribute(Name:="C:\Users\Didier\Documents\Visual Studio 2010\Projects\VuBridge1\VuBridge1\Data\VuBridgeDB.sdf")> _
    Partial Public Class myClassDataContext
        Inherits System.Data.Linq.DataContext

        Private Shared mappingSource As System.Data.Linq.Mapping.MappingSource _ 
                = New System.Data.Linq.Mapping.AttributeMappingSource()

        Partial Private Sub InsertCompetitions(ByVal instance As Competitions)
        End Sub
    End Class

<Table(Name:="Competitions")> _
    Partial Public Class Competitions    

        Partial Private Sub OnC_TitleChanged()
        End Sub
    End Class

Теперь я пытаюсь добавить свою собственную бизнес-логику в мой класс:

Public Class myClassDataContext    
    Private Sub InsertCompetitions(ByVal instance As Competitions)
    End Sub
End Class    

Public Class Competitions
    Private Sub onC_SiteChanged()
            Me.
    End Sub
End Class

Проблема:

  1. VB.NET отклоняет имя класса myClassDataContext, говоря, что оно уже существует.

  2. Я ожидал, что свойство C_Site будет доступно в моем собственном классе (а также в других столбцах «Соревнования»), но когда я набираю «Я», IntelliSense не дает мне ни одно из свойств Соревнования (т.е. столбцы данных).

Я перепробовал все виды Partial Public, добавив пространство имен, аналогичное тому, которое используется в автоматически сгенерированном ... Ничего не работает.

Может кто-нибудь предоставить рабочий образец?

Ответы [ 3 ]

4 голосов
/ 23 ноября 2010

Вам нужно также сделать другое объявление myClassDataContext частичным:

 Public Partial Class myClassDataContext
     Private Sub InsertCompetitions(ByVal instance As Competitions)
         ...
     End Sub
     ...
 End Class

В противном случае компилятор VB думает, что вы пытаетесь объявить другой «автономный» класс, который, как оказалось, имеет то же имя.

Это решит обе ваши проблемы - другие свойства и т. Д. В настоящее время отсутствуют в вашем «дополнительном» коде класса по той же причине.

1 голос
/ 23 ноября 2010

Ладно, спасибо, ребята ... Наконец-то все заработало, , добавив такое же объявление пространства имен , например:

Namespace VuBridgeDB
Partial Public Class VubridgeDB

    Private Sub InsertCompetitions(ByVal instance As Competitions)

        MsgBox("Inserting " & instance.C_Title, vbInformation)

    End Sub

End Class

Конец пространства имен

Как только это будет сделано, Intellisense полностью распознает параметр экземпляра.

0 голосов
/ 23 ноября 2010

Объявление класса, которое работает с нами, просто Partial Class myClassDataContext в отдельном файле, не более того. Это должно быть в той же сборке (dll или exe) и пространстве имен исходного класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...