LINQPad доступ к встроенному DataContext в методах расширения - PullRequest
3 голосов
/ 07 июля 2011

Могу ли я получить доступ к this объекту в моих методах расширения?

Пока это то, что у меня есть:

void Main() {

    IQueryable<DataContextTable> list = DataContextTables.First().NewMethod(this);

}

public static class ExtensionMethods {

    public static IQueryable<DataContextTable> NewMethod(this DataContextTable table, TypedDataContext context) {
        return context.DataContextTables.Where(item => item.SomeProperty == true).AsQqueryable();
    }

}

как вы можете видеть, мне все еще нужно передать TypedDataContext в качестве параметров моим методам расширения. Есть ли другой способ сделать это?

Ответы [ 2 ]

3 голосов
/ 07 июля 2011

Я создал статический член типа TypedDataSet и "инициализировал" его в функции Main () с this .

void Main() {

    ExtensionMethods.Context = this;
    IQueryable<DataContextTable> list = DataContextTables.First().NewMethod(this);

}

public static class ExtensionMethods {

    public static TypedDataSet Context;

    public static IQueryable<DataContextTable> NewMethod(this DataContextTable table) {
        return Context.DataContextTables.Where(item => item.SomeProperty == true);
    }

}
1 голос
/ 30 октября 2013

Аналогично ответу acermate433s, но в LINQPad 4 я создал статический член типа TypedDataContext :

void Main()
{
    MyExtensions.Context = this;
}

public static class MyExtensions
{
    public static TypedDataContext Context { get; set; }
    // your method here
}
...