如何访问委托内的对象
问题描述:
我有一个函数委托返回一个对象。
我将这个对象存储在一个列表中。
我想通过该列表来获得对象的值进行迭代,但在for循环我不能这样做:如何访问委托内的对象
public static class Tracking
{
public delegate TrackingObject GetTrackObject();
public static List<GetTrackObject> TrackedLists = new List<GetTrackObject>();
public static void Register (GetTrackObject trackobject)
{
TrackedLists.Add(trackobject);
}
}
public class TrackingObject
{
object collection;
Type T;
Type K;
Type V;
public TrackingObject (object o, Type t, Type k, Type v)
{
collection = o;
T = t;
K = k;
V = v;
}
}
class TrackList<T> : List<T>
{
public string Name = null;
public int ItemCount;
public int AvgSize;
public int Size;
public TrackList (string name, byte avgsize)
{
this.Name = name;
this.AvgSize = avgsize;
this.ItemCount = this.Count;
this.Size = this.Count * this.AvgSize;
Tracking.Register(this.GetTrackObject);
}
public TrackingObject GetTrackObject()
{
TrackingObject TO = new TrackingObject(this, typeof(T), null, null);
return TO;
}
}
public static void Main()
{
foreach (Tracking.GetTrackObject method in Tracking.TrackedLists)
{ }
}
答
你是不是存储列表中的对象,要存储的方法在列表中调用(运行)。
一个选项是调用你的方法来获得结果。
public static void Main()
{
foreach (Tracking.GetTrackObject method in Tracking.TrackedLists)
{
object trackedObject = method();
}
}
或者,也可以让你列表对象的列表,并调用你的注册方法,该方法(和结果存储在您的列表)。
我不明白这个问题。你的错误是什么?什么是失败? –
我必须同意@David Heffernan,这段代码看起来很尴尬......公众领域的背后的原因,跟踪对象委托只是困惑我 – edvaldig