2016-07-05 67 views
0

我尝试使用FilterFunction类似方法尝试时出错。非禁用成员'列表<PKT, T> .FilterFunction'不能像方法一样使用

发生错误时,我不知道如何解决它?

我只使用如下代码:

我创建函数委托,如:

internal class FilterFunctionDelegate<PKT, T> 
{ 
} 

然后,在FDBindingList!2.cs类,我设置类:

private FilterFunctionDelegate<PKT, T> FilterFunction; 

internal delegate bool FilterFunctionDelegate(T item); 

internal void Add(T item) 
{ 
    if ((this.FilterFunction == null) || this.FilterFunction(item)){} 
} 

ArbsBindingList.cs

base.SetFilter(new FDBindingList<long, Arb>.FilterFunctionDelegate(this.Filter.IsSatisfies)); 

我的错误是:

在线路this.FilterFunction(item)

非可调用部件 'FDBindingList.FilterFunction' 不能使用等的方法

和线路:

无法从'JustXin.Windows.Forms.FDBindingList.FilterFunctionDelegate'转换为'JustXin.Windows.Forms.FilterFunctionDelegate'

+2

在你的情况'FilterFunctionDelegate'既是一个类名和委托的名称。这很奇怪,应该会导致错误,因为编译器无法区分它们。为班级使用另一个名字。 – HimBromBeere

+0

@HimBromBeere你可以在答案中添加更多代码吗?我添加了'FilterFunctionDelegate + Class',它变为:'内部类FilterFunctionDelegateClass '和'私人FilterFunctionDelegateClass FilterFunction;'。 – vanloc

回答

2

FilterFunctionDelegate是一个类名和委托的名称。这很奇怪,应该会导致错误,因为编译器无法区分它们。不过我dounbt你需要的类以任何方式,只是委托去内FDBindingList!2.cs(怪异的文件名顺便说一句,在!可能导致问题。):

internal delegate bool FilterFunctionDelegate(T item); 

internal void Add(T item) 
{ 
    if ((this.FilterFunctionDelegate == null) || this.FilterFunctionDelegate(item)) { /* ... */ } 
} 

要指派代表简单的写类似这样的东西:

internal Func<T, bool> FilterFunctionDelegate; 

// ... 

现在设置:

fdbFindingList.FilterFunctionDelegate = delegate(T item) { /* your delegate function here*/ } 

同样也可以通过使用更多的.NET 3.5样Func<T>实现像这样

fdbFindingList.FilterFunctionDelegate = (T) => /* your delegate-code here*/ 

,并调用它是这样的:

var list = new FDBindingList<long, Arb>(); 
list.FilterFunctionDelegate = ... 
list.FilterFunctionDelegate(MyInstanceOfT) 
+0

嗨@himbrombeere,我试着改变这一行:'if((this.FilterFunctionDelegate == null)|| this.FilterFunctionDelegate(item)){/ * ... * /}'它也显示如下错误:'FDBindingList 。FilterFunctionDelegate'是一种类型,它在给定的上下文中无效,'on-invocable member'FDBindingList .FilterFunctionDelegate'不能像方法一样使用。 – vanloc

+0

你能帮我吗? – vanloc

+0

也许你可以尝试'Func'方法? – HimBromBeere

相关问题