LinqPad: прямая ссылка на ObjectContexts в классе - PullRequest
0 голосов
/ 26 октября 2011

Я постоянно работаю в C & P между LinqPad и VS. И я просто хочу сделать переходы максимально аккуратными.

Таким образом, в LinqPad вы можете напрямую ссылаться на ObjectContext внутри основной функции или любой пользовательской функции. Но если вы включите туда класс, вы не сможете напрямую ссылаться на какой-либо ObjectContext в функциях / методах класса.

Одна вещь, которую вы можете сделать, это:

class MyClass{

    ISessionTable<Category> Categories;

    public MyClass(ISessionTable<Category> categories){
        Categories = categories;
    }

    public void MyClassFunction(){
        Categories.Count().Dump();
    }
}

Есть ли другой способ сделать это? Приведенный выше тип диктует, как мне следует кодировать и в VS, чего я бы хотел избежать (если это возможно).

UPDATE:

В моем коде, отличном от LinqPad C #, я не всегда могу просто передать ObjectContext классу по разным причинам. Итак, чтобы быть более конкретным в моем вопросе, есть ли способ получить доступ к «Категории» (следуя приведенному выше примеру), не передавая его в класс? Другими словами, существует ли какой-то глобальный способ доступа?

1 Ответ

0 голосов
/ 26 октября 2011

Я только что нашел способ обойти проблему с помощью подхода к проектированию.

Позвольте мне уточнить мой собственный рабочий процесс или причину использования LinqPad.Я использую LinqPad для тестирования классов, их много.Многие из них должны иметь доступ к базе данных.Поскольку копирование и вставка фрагментов кода (целых классов) занимает меньше времени, чем рефакторинг, я стараюсь уменьшить объем рефакторинга, необходимый при переносе кода между LinqPad и VS.Поэтому я стараюсь, чтобы две версии кода были как можно более точными.

Поэтому я решил использовать третий произвольный класс для хранения объекта ObjectContext.Затем для проверки класса в LinqPad потребуется следующий код:

void Main()
{
    DB.Categories = Categories;

    MyAwesomeClass awesomeness = new MyAwesomeClass();
    awesomeness.DumpNumOfCategories();
}

class MyAwesomeClass {

    public MyAwesomeClass(){

    }

    public void DumpNumOfCategories(){
        DB.Categories.Count().Dump();
    }

}

class DB{
    public static ISessionTable<Category> Categories { get; set; }
}

Таким образом, класс в тестировании (например, MyAwesomeClass) может быть одинаковым в версиях LinqPad и VS.Нет больше рефакторинга и больше не загрязняющий конструктор класса.Класс DB потребует двух разных версий, но его не нужно слишком сильно менять после его реализации.

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