LINQPad在扩展方法中访问内置的DataContext

时间:2011-07-07 15:18:32

标签: extension-methods linqpad

我可以在扩展方法中访问对象吗?

到目前为止,这就是我所拥有的:

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 个答案:

答案 0 :(得分:3)

我创建了 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 :(得分:1)

类似于acermate433s的回答,但在LINQPad 4中,我创建了一个类型为 TypedDataContext 的静态成员:

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

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