Частичные классы, LINQ, интерфейсы и VB.NET - PullRequest
5 голосов
/ 23 января 2009

Хорошо, я столкнулся с проблемой с VB.NET. Итак, все эти защитники VB.NET, пожалуйста, вы можете мне помочь? Вот моя проблема: я использую LINQ to Entities, он также работает с LINQ to SQL, я создаю свой файл edmx, а затем создаю Partial Publc Class с тем же именем, что и у одной из сущностей. эта проблема.

Мне нужен класс Partial для реализации Interface. Реализует Interfaces.IAsset. Но VB.NET хочет поместить «Implements Interfaces.IAsset.ID» в конец свойства, что, конечно, находится в разделе сгенерированного кода Partial Класс, который я не могу сделать, так как файл EDMX генерируется автоматически и будет меняться в будущем.

Вот строка кода, которая нуждается в сортировке:

Открытое свойство ID1 (), так как Integer реализует интерфейсы .IAsset.ID

В C # это нормально и творит чудеса. Так почему же VB.NET не может реализовать интерфейс, который находится в классе, сгенерированном кодом?

Ответы [ 2 ]

6 голосов
/ 23 января 2009

Немного косвенности в частичном классе должно сработать ...

Public Property AssetId() As Int32 Implements IAsset.AssetId
    Get
        Return Id1
    End Get
    Set(ByVal value As Int32)
        Id1 = value
    End Set
End Property

Свойство, которое реализует интерфейс, вызывает фактическое свойство, сгенерированное базой данных. По сути, класс будет иметь два свойства id, что не очень элегантно, но при доступе через интерфейс вы не почувствуете разницу.

1 голос
/ 23 января 2009

Обойти это невозможно. Недостаток того, как VB заставляет вас обращаться с реализацией интерфейсов.

Вы можете создать отдельную библиотеку для вашего LINQ to Entities, которая была в C #. Я не уверен, что вы могли бы просто поместить частичные классы в отдельный проект и оставить основы в VB. Я никогда не пробовал это.

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