当集合已给定项数时,如何调用方法
本文关键字:何调用 调用 方法 集合 | 更新日期: 2023-09-27 17:57:28
当在List属性中添加了特定数量的项时,我想调用一个方法。事实上,我需要找到一种方法来自动检查一个集合是否已经给出了项的计数,然后调用一个方法。
好的,举一个例子。我有一个班级我的班级
public class MyClass
{
public List<string> Url { get; set; }
public void fullList()
{
//some work with the List
}
}
现在,在主函数的某个地方,我创建了MyClass的实例并添加了一些项。
MyClass mc = new MyClass();
mc.Url = new List<string>();
mc.Url.Add("www.1.com");
mc.Url.Add("www.2.com");
//now on 3rd added item I want to invoke method fullList from class MyClass
mc.Url.Add("www.3.com");
您可能应该创建一个封装URL列表和所需行为的类。我想行为是,当列表达到3个项目时,它会"满",然后你希望引发一个MyClass可以监听的事件。
class MyUrls
{
List<string> _urls = new List<string>();
public void Add(string url)
{
_urls.Add(url);
if (_urls.Count == 3 && OnFull != null)
OnFull.Invoke();
}
public IEnumerable<string> Urls
{
get
{
return _urls;
}
}
public event Action OnFull;
}
并像这样使用:
public class MyClass
{
public MyClass()
{
Urls.OnFull += fullList;
}
public MyUrls Urls { get; }
public void fullList()
{
//some work with the List
}
}
MyClass mc = new MyClass();
mc.Urls = new List<string>();
mc.Urls.Add("www.1.com");
mc.Urls.Add("www.2.com");
//now on 3rd added item I want to invoke method fullList from class MyClass
mc.Urls.Add("www.3.com");
不要重新发明轮子-使用ObservableCollection<T>
。
您可以将处理程序附加到CollectionChanged
事件,该事件在修改集合时被调用。
ObservableCollection<string> collection = new ObservableCollection<string>();
collection.CollectionChanged += (sender, args) => {
if(args.Action == NotifyCollectionChangedAction.Add &&
collection.Count == 3)
HandleItemsAdded(args.NewItems.Cast<string>());
};
collection.Add("www.1.com");
collection.Add("www.2.com");
collection.Add("www.3.com");
经办人:
public static void HandleItemsAdded(IEnumerable<string> newItems)
{
foreach(var item in newItems)
Console.WriteLine(item);
}
工作Fiddle:http://dotnetfiddle.net/eIeilP