当尝试使用类似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’
发布于 2016-07-05 06:52:07
FilterFunctionDelegate既是一个类名,也是委托的名称.这很奇怪,应该会导致错误,因为编译器无法区分它们。不过,无论如何,您都需要这个类,只需使用FDBindingList!2.cs中的委托(奇怪的文件名顺便说一句,!可能会造成问题):
internal delegate bool FilterFunctionDelegate(T item);
internal void Add(T item)
{
if ((this.FilterFunctionDelegate == null) || this.FilterFunctionDelegate(item)) { /* ... */ }
}要分配委托,只需编写类似于以下内容的内容:
fdbFindingList.FilterFunctionDelegate = delegate(T item) { /* your delegate function here*/ }通过使用更类似.NET-3.5的Func<T>,也可以实现同样的效果。
internal Func<T, bool> FilterFunctionDelegate;
// ...现在把它设置成这样
fdbFindingList.FilterFunctionDelegate = (T) => /* your delegate-code here*/就这样叫它:
var list = new FDBindingList<long, Arb>();
list.FilterFunctionDelegate = ...
list.FilterFunctionDelegate(MyInstanceOfT)https://stackoverflow.com/questions/38196473
复制相似问题