我在C#遊戲中做了一個實用程序調試類,我正在努力能夠監視和觀察屬性的值。是這樣的:改善財產監測代碼?
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);
}
}
現在爲了監控財產,說我的遊戲的FPS,我必須做
Monitor.Watch(new Property(Game, "FPS"));
豈不是有辦法以某種方式使這個簡單的使用?理想情況下,我想能夠做到
Monitor.Watch(Game.FPS);
但由於我們可以在C#不store pointers to value types,我不知道我會怎麼做。也許使用閉包和lambda表達式?我早些時候提出過這個問題,但我不知道該怎麼做。任何其他方式來改善這一點?
感謝