我可以在扩展方法中访问此对象吗?
到目前为止,这就是我所拥有的:
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作为参数传递给我的扩展方法。还有其他办法吗?
答案 0 :(得分:3)
我创建了 TypedDataSet 的静态成员,并在 Main()函数中“
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
}