I have a user defined class that I want to create a public List as part of. I want the List to be a List of delegate functions that I can add to and set each List Member to a delegate function. I want this list of functions to be part of the class I instantiate, so it follows the instance of the class as I pass it to other functions. I need the ability to call the delegated functions via a foreach loop, so it also has to be IEnumberable.
I’ve been trying for several hours, what I have may or may not do part of the job. When it started looking like I needed to write my own IEnumberation routines for the custom List, I realize I was in way over my head and came here.
This is the code I have:
public delegate List<ChartTestModel> MyDelegate<T>(T i);
public class DelegateList<T>
{
public void Add(MyDelegate<T> del)
{
imp.Add(del);
}
public void CallDelegates(T k)
{
foreach (MyDelegate<T> del in imp)
{
del(k);
}
}
private List<MyDelegate<T>> imp = new List<MyDelegate<T>>();
}
I don’t even know if this does what I want it to or not. I know I can’t ForEach through it, though. It’s written entirely from pieced together code from looking on Google. I barely understand what it’s supposed to do.
IEnumerable<T>is simple to implement, particularly when you have a collection as a member of the class. All you need to do is define appropriateGetEnumeratormethods, and the easiest thing to do is return the enumerator of the underlying collection.Here, you implement methods for implicitly for
IEnumerable<T>and explicitly forIEnumerable. (You have to implement both asIEnumerable<T>inheritsIEnumerable.)For your specific class, you might have