Создание частичных методов в скомпилированном классе LINQ-> SQL - PullRequest
0 голосов
/ 26 августа 2009

Если я хочу скомпилировать свои классы LINQ-> SQL в DLL, чтобы предоставить ее разработчикам, как я могу сделать так, чтобы они все еще могли подключаться к различным частичным методам сущностей (например, OnValidate)? Я знаю, что вы не можете реализовать частичные методы в скомпилированной сборке, но любые предложения о том, как я могу извлечь это поведение (возможно, с событиями?), Будут оценены.

Ответы [ 4 ]

1 голос
/ 26 августа 2009

Вам может потребоваться настроить это решение под свои нужды, но простой способ публикации событий частичными методами можно сделать так:

partial class LinqClass
{
    public event Action<LinqClass, ChangeAction> OnValidating;

    partial void OnValidate(ChangeAction action)
    {
        if (OnValidating != null)
        {
            OnValidating(this, action);
        }
    }
}

Возможно, вам придется или не нужно передавать различные параметры, но Action будет поддерживать множество.

1 голос
/ 26 августа 2009

Насколько я знаю, вы не можете.

Когда компилятор встречает частичные классы, он объединяет их вместе, образуя полный класс. Единственный способ, которым я вижу, что ваши потребности удовлетворяются, - это сделать ваши классы наследуемыми, но с L2S это может оказаться более трудным, чем оно того стоит.

EDIT:

Что касается событий, в зависимости от размера вашего подсчета классов L2S, все зависит от того, что вы готовы вложить. Это решение может сработать, но на его получение уйдет много времени. Сочетание Interfaces с событиями и пользовательскими обработчиками может помочь вам в этом, просто будьте готовы к затратам времени, если вам нужно большое количество классов.

MSDN - Частичные классы

0 голосов
/ 27 августа 2009

Если я хочу скомпилировать свои классы LINQ-> SQL в DLL, чтобы предоставить ее разработчикам

Я не думаю, что это хорошая идея. Существует множество причин, по которым модель LinqToSql может захотеть измениться. Скорее всего, вам потребуется изменить свою модель, открыв новую информацию о вашем домене и т. Д.

Создавая отдельную DLL-библиотеку «для предоставления вашим разработчикам», вы создаете искусственную границу, которая может снизить эффективность разработки. Получение системы контроля версий может быть более подходящим для того, что вы можете попытаться выполнить (быть ОЧЕНЬ расплывчатым здесь)

0 голосов
/ 26 августа 2009

Я бы справился с этим, публикуя публичные мероприятия в любой момент, когда вы пожелаете.

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