mirror of
https://github.com/simtactics/mysimulation.git
synced 2025-03-15 14:51:21 +00:00
- NioTSO client isn't needed because we're using RayLib - Added FreeSO's API server to handle most backend operations
53 lines
1.2 KiB
C#
Executable file
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;
|
|
}
|
|
}
|
|
}
|