मैंने एक सी # गेम में उपयोगिता डीबग क्लास बनाया है, मैं गुणों के मूल्यों की निगरानी और निगरानी करने में सक्षम होने के लिए काम कर रहा हूं। इस प्रकार है: आदेश में एक संपत्ति की निगरानी के लिए मेंसंपत्ति निगरानी कोड में सुधार करें?
public static class Monitor
{
private static List<object> monitoredObjects;
public static void Initialize()
{
monitoredObjects = new List<object>();
}
public static void Watch(object o)
{
monitoredObjects.Add(o);
}
public static void Unwatch(object o)
{
monitoredObjects.Remove(o);
}
public static void Draw(RenderWindow app)
{
//Not actual code, I actually draw this in game
foreach (object o in monitoredObjects)
Console.WriteLine(o.ToString());
}
}
public class Property
{
private object obj;
private PropertyInfo propertyInfo;
public override string ToString()
{
return propertyInfo.Name + ": " + propertyInfo.GetValue(obj, null).ToString();
}
public Property(object o, string property)
{
obj = o;
propertyInfo = o.GetType().GetProperty(property);
}
}
अब, कहते हैं कि मेरे खेल के एफपीएस, मुझे क्या करना चाहिए
Monitor.Watch(new Property(Game, "FPS"));
वहाँ एक रास्ता किसी भी तरह इस सरल उपयोग करने के लिए बनाने के लिए नहीं होना चाहेंगे? आदर्श रूप में मैं
Monitor.Watch(Game.FPS);
ऐसा करने में सक्षम होना चाहते हैं लेकिन चूंकि हम सी # में store pointers to value types नहीं, मुझे लगता है मैं यह कैसे करना होगा पता नहीं है सकते हैं। शायद बंद करने और lambada अभिव्यक्तियों का उपयोग कर? मुझे पहले यह सुझाव दिया गया था लेकिन मुझे यकीन नहीं है कि यह कैसे करें। इसे सुधारने के किसी भी अन्य तरीके?
धन्यवाद