mysimulation/server/tso.common/Utils/ValuePointer.cs
Tony Bark 22191ce648 Removed NioTSO client and server
- NioTSO client isn't needed because we're using RayLib
- Added FreeSO's API server to handle most backend operations
2024-05-01 02:55:43 -04:00

53 lines
1.2 KiB
C#
Executable file

using System.Reflection;
namespace FSO.Common.Utils
{
/// <summary>
/// Helps UI controls like lists refer to a data service value
/// for labels such that when updates come in the labels update
/// </summary>
public class ValuePointer
{
private object Item;
private PropertyInfo Field;
public ValuePointer(object item, string field)
{
this.Item = item;
this.Field = item.GetType().GetProperty(field);
}
public object Get()
{
return Field.GetValue(Item);
}
public override string ToString()
{
var value = Get();
if(value != null)
{
return value.ToString();
}
else
{
return string.Empty;
}
}
public static T Get<T>(object value)
{
if(value == null)
{
return default(T);
}
if(value is ValuePointer)
{
return (T)((ValuePointer)value).Get();
}
return (T)value;
}
}
}