Here are the examples of the csharp api System.Type.GetFields() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
752 Examples
19
View Source File : RandomHelper.cs
License : MIT License
Project Creator : 1996v
License : MIT License
Project Creator : 1996v
public static object RandomValue(this Type t, bool stringValueAllowEmpty = true)
{
if (t.IsPrimitive)
{
if (t == typeof(byte))
{
return (byte)(Rand.Next(byte.MaxValue - byte.MinValue + 1) + byte.MinValue);
}
if (t == typeof(sbyte))
{
return (sbyte)(Rand.Next(sbyte.MaxValue - sbyte.MinValue + 1) + sbyte.MinValue);
}
if (t == typeof(short))
{
return (short)(Rand.Next(short.MaxValue - short.MinValue + 1) + short.MinValue);
}
if (t == typeof(ushort))
{
return (ushort)(Rand.Next(ushort.MaxValue - ushort.MinValue + 1) + ushort.MinValue);
}
if (t == typeof(int))
{
var bytes = new byte[4];
Rand.NextBytes(bytes);
return BitConverter.ToInt32(bytes, 0);
}
if (t == typeof(uint))
{
var bytes = new byte[4];
Rand.NextBytes(bytes);
return BitConverter.ToUInt32(bytes, 0);
}
if (t == typeof(long))
{
var bytes = new byte[8];
Rand.NextBytes(bytes);
return BitConverter.ToInt64(bytes, 0);
}
if (t == typeof(ulong))
{
var bytes = new byte[8];
Rand.NextBytes(bytes);
return BitConverter.ToUInt64(bytes, 0);
}
if (t == typeof(float))
{
var bytes = new byte[4];
Rand.NextBytes(bytes);
var f = BitConverter.ToSingle(bytes, 0);
if (float.IsNaN(f))
f = (float)RandomValue<short>();
return f;
}
if (t == typeof(double))
{
var bytes = new byte[8];
Rand.NextBytes(bytes);
var d = BitConverter.ToDouble(bytes, 0);
if (double.IsNaN(d))
d = (double)RandomValue<short>();
return d;
}
if (t == typeof(char))
{
var roll = Rand.Next(ASCII.Length);
return ASCII[roll];
}
if (t == typeof(bool))
{
return (Rand.Next(2) == 1);
}
throw new InvalidOperationException();
}
if (t == typeof(decimal))
{
return new decimal((int)typeof(int).RandomValue(), (int)typeof(int).RandomValue(), (int)typeof(int).RandomValue(), false, 28);
}
if (t == typeof(string))
{
int start = stringValueAllowEmpty ? 0 : 1;
var len = Rand.Next(start, 28);
var c = new char[len];
for (var i = 0; i < c.Length; i++)
{
c[i] = (char)typeof(char).RandomValue();
}
return new string(c);
}
if (t == typeof(DateTime))
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var bytes = new byte[4];
Rand.NextBytes(bytes);
var secsOffset = BitConverter.ToInt32(bytes, 0);
var retDate = epoch.AddSeconds(secsOffset);
return retDate;
}
if (t == typeof(TimeSpan))
{
return new TimeSpan(RandomValue<DateTime>().Ticks);
}
if (t == typeof(DataTable))
{
DataTable dt = new DataTable();
int coluCount = Rand.Next(10, 30);
for (int i = 0; i < coluCount; i++)
{
dt.Columns.Add(RandomHelper.RandomValue<string>(false), typeof(object));
}
int rowCount = Rand.Next(20, 50);
for (int i = 0; i < rowCount; i++)
{
var row = new object[coluCount];
for (int zi = 0; zi < coluCount; zi++)
{
row[zi] = RandomHelper.RandomValue<object>();
}
dt.Rows.Add(row);
}
return dt;
}
if (t.IsNullable())
{
// leave it unset
if (Rand.Next(2) == 0)
{
// null!
return Activator.CreateInstance(t);
}
var underlying = Nullable.GetUnderlyingType(t);
var val = underlying.RandomValue(stringValueAllowEmpty);
var cons = t.GetConstructor(new[] { underlying });
return cons.Invoke(new object[] { val });
}
if (t.IsEnum)
{
var allValues = Enum.GetValues(t);
var ix = Rand.Next(allValues.Length);
return allValues.GetValue(ix);
}
if (t.IsArray)
{
var valType = t.GetElementType();
var len = Rand.Next(20, 50);
var ret = Array.CreateInstance(valType, len);
//var add = t.GetMethod("SetValue");
for (var i = 0; i < len; i++)
{
var elem = valType.RandomValue(stringValueAllowEmpty);
ret.SetValue(elem, i);
}
return ret;
}
if (t.IsGenericType)
{
var defind = t.GetGenericTypeDefinition();
if (defind == typeof(HashSet<>))
{
var valType = t.GetGenericArguments()[0];
var ret = Activator.CreateInstance(t);
var add = t.GetMethod("Add");
var contains = t.GetMethod("Contains");
var len = Rand.Next(20, 50);
for (var i = 0; i < len; i++)
{
var elem = valType.RandomValue(stringValueAllowEmpty);
while (elem == null || (bool)contains.Invoke(ret, new object[] { elem }))
elem = valType.RandomValue(stringValueAllowEmpty);
add.Invoke(ret, new object[] { elem });
}
return ret;
}
if (defind == typeof(Dictionary<,>))
{
var keyType = t.GetGenericArguments()[0];
var valType = t.GetGenericArguments()[1];
var ret = Activator.CreateInstance(t);
var add = t.GetMethod("Add");
var contains = t.GetMethod("ContainsKey");
var len = Rand.Next(20, 50);
if (keyType == typeof(Boolean))
len = 2;
for (var i = 0; i < len; i++)
{
var val = valType.RandomValue(stringValueAllowEmpty);
var key = keyType.RandomValue(stringValueAllowEmpty);
while (key == null || (bool)contains.Invoke(ret, new object[] { key }))
key = keyType.RandomValue(stringValueAllowEmpty);
add.Invoke(ret, new object[] { key, val });
}
return ret;
}
if (defind == typeof(List<>))
{
var valType = t.GetGenericArguments()[0];
var ret = Activator.CreateInstance(t);
var add = t.GetMethod("Add");
var len = Rand.Next(20, 50);
for (var i = 0; i < len; i++)
{
var elem = valType.RandomValue(stringValueAllowEmpty);
add.Invoke(ret, new object[] { elem });
}
return ret;
}
if (defind == typeof(ArraySegment<>))
{
var valType = t.GetGenericArguments()[0];
var ary = valType.MakeArrayType().RandomValue(stringValueAllowEmpty);
var lenT = ary.GetType().GetProperty("Length");
var offset = Rand.Next(0, (int)lenT.GetValue(ary) - 1);
var len = (int)lenT.GetValue(ary) - offset;
return Activator.CreateInstance(t, ary, offset, len);
}
}
if (t == typeof(Guid))
return Guid.NewGuid();
if (t == typeof(object))
{
var code = Rand.Next(0, 9);
switch (code)
{
case 0:
return RandomValue<int>();
case 1:
return RandomValue<long>();
case 2:
return RandomValue<Char>();
case 3:
return RandomValue<DateTime>();
case 4:
return RandomValue<string>(stringValueAllowEmpty);
case 5:
return RandomValue<Guid>();
case 6:
return RandomValue<decimal>();
case 7:
return RandomValue<double>();
case 8:
return RandomValue<float>();
default:
return RandomValue<short>();
}
}
//model
var retObj = Activator.CreateInstance(t);
foreach (var p in t.GetFields())
{
//if (Rand.Next(5) == 0) continue;
var fieldType = p.FieldType;
p.SetValue(retObj, fieldType.RandomValue(stringValueAllowEmpty));
}
foreach (var p in t.GetProperties())
{
//if (Rand.Next(5) == 0) continue;
if (p.CanWrite && p.CanRead)
{
var fieldType = p.PropertyType;
p.SetValue(retObj, fieldType.RandomValue(stringValueAllowEmpty));
}
}
return retObj;
}
19
View Source File : RandomHelper.cs
License : MIT License
Project Creator : 1996v
License : MIT License
Project Creator : 1996v
public static object RandomValue(this Type t, bool stringValueAllowEmpty = true)
{
if (t.IsPrimitive)
{
if (t == typeof(byte))
{
return (byte)(Rand.Next(byte.MaxValue - byte.MinValue + 1) + byte.MinValue);
}
if (t == typeof(sbyte))
{
return (sbyte)(Rand.Next(sbyte.MaxValue - sbyte.MinValue + 1) + sbyte.MinValue);
}
if (t == typeof(short))
{
return (short)(Rand.Next(short.MaxValue - short.MinValue + 1) + short.MinValue);
}
if (t == typeof(ushort))
{
return (ushort)(Rand.Next(ushort.MaxValue - ushort.MinValue + 1) + ushort.MinValue);
}
if (t == typeof(int))
{
var bytes = new byte[4];
Rand.NextBytes(bytes);
return BitConverter.ToInt32(bytes, 0);
}
if (t == typeof(uint))
{
var bytes = new byte[4];
Rand.NextBytes(bytes);
return BitConverter.ToUInt32(bytes, 0);
}
if (t == typeof(long))
{
var bytes = new byte[8];
Rand.NextBytes(bytes);
return BitConverter.ToInt64(bytes, 0);
}
if (t == typeof(ulong))
{
var bytes = new byte[8];
Rand.NextBytes(bytes);
return BitConverter.ToUInt64(bytes, 0);
}
if (t == typeof(float))
{
var bytes = new byte[4];
Rand.NextBytes(bytes);
var f = BitConverter.ToSingle(bytes, 0);
if (float.IsNaN(f))
f = (float)RandomValue<short>();
return f;
}
if (t == typeof(double))
{
var bytes = new byte[8];
Rand.NextBytes(bytes);
var d= BitConverter.ToDouble(bytes, 0);
if (double.IsNaN(d))
d = (double)RandomValue<short>();
return d;
}
if (t == typeof(char))
{
var roll = Rand.Next(ASCII.Length);
return ASCII[roll];
}
if (t == typeof(bool))
{
return (Rand.Next(2) == 1);
}
throw new InvalidOperationException();
}
if (t == typeof(decimal))
{
return new decimal((int)typeof(int).RandomValue(), (int)typeof(int).RandomValue(), (int)typeof(int).RandomValue(), false, 28);
}
if (t == typeof(string))
{
int start = stringValueAllowEmpty ? 0 : 1;
var len = Rand.Next(start, 40);
var c = new char[len];
for (var i = 0; i < c.Length; i++)
{
c[i] = (char)typeof(char).RandomValue();
}
return new string(c);
}
if (t == typeof(DateTime))
{
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var bytes = new byte[4];
Rand.NextBytes(bytes);
var secsOffset = BitConverter.ToInt32(bytes, 0);
var retDate = epoch.AddSeconds(secsOffset);
return retDate;
}
if (t == typeof(TimeSpan))
{
return new TimeSpan(RandomValue<DateTime>().Ticks);
}
if (t == typeof(DataTable))
{
DataTable dt = new DataTable();
int coluCount = Rand.Next(10, 30);
for (int i = 0; i < coluCount; i++)
{
string n = RandomHelper.RandomValue<string>(false);
while(dt.Columns.Contains(n))
n = RandomHelper.RandomValue<string>(false);
dt.Columns.Add(n, typeof(object));
}
int rowCount = Rand.Next(20, 50);
for (int i = 0; i < rowCount; i++)
{
var row = new object[coluCount];
for (int zi = 0; zi < coluCount; zi++)
{
row[zi] = RandomHelper.RandomValue<object>();
}
dt.Rows.Add(row);
}
return dt;
}
if (t.IsNullable())
{
// leave it unset
if (Rand.Next(2) == 0)
{
// null!
return Activator.CreateInstance(t);
}
var underlying = Nullable.GetUnderlyingType(t);
var val = underlying.RandomValue(stringValueAllowEmpty);
var cons = t.GetConstructor(new[] { underlying });
return cons.Invoke(new object[] { val });
}
if (t.IsEnum)
{
var allValues = Enum.GetValues(t);
var ix = Rand.Next(allValues.Length);
return allValues.GetValue(ix);
}
if (t.IsArray)
{
var valType = t.GetElementType();
var len = Rand.Next(20, 50);
var ret = Array.CreateInstance(valType, len);
//var add = t.GetMethod("SetValue");
for (var i = 0; i < len; i++)
{
var elem = valType.RandomValue(stringValueAllowEmpty);
ret.SetValue(elem, i);
}
return ret;
}
if (t.IsGenericType)
{
var defind = t.GetGenericTypeDefinition();
if (defind == typeof(HashSet<>))
{
var valType = t.GetGenericArguments()[0];
var ret = Activator.CreateInstance(t);
var add = t.GetMethod("Add");
var contains = t.GetMethod("Contains");
var len = Rand.Next(20, 50);
for (var i = 0; i < len; i++)
{
var elem = valType.RandomValue(stringValueAllowEmpty);
while (elem == null || (bool)contains.Invoke(ret, new object[] { elem }))
elem = valType.RandomValue(stringValueAllowEmpty);
add.Invoke(ret, new object[] { elem });
}
return ret;
}
if (defind == typeof(Dictionary<,>))
{
var keyType = t.GetGenericArguments()[0];
var valType = t.GetGenericArguments()[1];
var ret = Activator.CreateInstance(t);
var add = t.GetMethod("Add");
var contains = t.GetMethod("ContainsKey");
var len = Rand.Next(20, 50);
if (keyType == typeof(Boolean))
len = 2;
for (var i = 0; i < len; i++)
{
var val = valType.RandomValue(stringValueAllowEmpty);
var key = keyType.RandomValue(stringValueAllowEmpty);
while (key == null || (bool)contains.Invoke(ret, new object[] { key }))
key = keyType.RandomValue(stringValueAllowEmpty);
add.Invoke(ret, new object[] { key, val });
}
return ret;
}
if (defind == typeof(List<>))
{
var valType = t.GetGenericArguments()[0];
var ret = Activator.CreateInstance(t);
var add = t.GetMethod("Add");
var len = Rand.Next(20, 50);
for (var i = 0; i < len; i++)
{
var elem = valType.RandomValue(stringValueAllowEmpty);
add.Invoke(ret, new object[] { elem });
}
return ret;
}
if (defind == typeof(ArraySegment<>))
{
var valType = t.GetGenericArguments()[0];
var ary = valType.MakeArrayType().RandomValue(stringValueAllowEmpty);
var lenT = ary.GetType().GetProperty("Length");
var offset = Rand.Next(0, (int)lenT.GetValue(ary) - 1);
var len = (int)lenT.GetValue(ary) - offset;
return Activator.CreateInstance(t, ary, offset, len);
}
}
if (t == typeof(Guid))
return Guid.NewGuid();
if (t == typeof(object))
{
var code = Rand.Next(0, 9);
switch (code)
{
case 0:
return RandomValue<int>();
case 1:
return RandomValue<long>();
case 2:
return RandomValue<Char>();
case 3:
return RandomValue<DateTime>();
case 4:
return RandomValue<string>(stringValueAllowEmpty);
case 5:
return RandomValue<Guid>();
case 6:
return RandomValue<decimal>();
case 7:
return RandomValue<double>();
case 8:
return RandomValue<float>();
default:
return RandomValue<short>();
}
}
//model
var retObj = Activator.CreateInstance(t);
foreach (var p in t.GetFields())
{
//if (Rand.Next(5) == 0) continue;
var fieldType = p.FieldType;
p.SetValue(retObj, fieldType.RandomValue(stringValueAllowEmpty));
}
foreach (var p in t.GetProperties())
{
//if (Rand.Next(5) == 0) continue;
if (p.CanWrite && p.CanRead)
{
var fieldType = p.PropertyType;
p.SetValue(retObj, fieldType.RandomValue(stringValueAllowEmpty));
}
}
return retObj;
}
19
View Source File : InternalExtensions.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
public static Dictionary<string, FieldInfo> GetFieldsDictIgnoreCase(this Type that) => that == null ? null : _dicGetFieldsDictIgnoreCase.GetOrAdd(that, tp =>
{
var fields = that.GetFields().GroupBy(p => p.DeclaringType).Reverse().SelectMany(p => p); //将基类的属性位置放在前面 #164
var dict = new Dictionary<string, FieldInfo>(StringComparer.CurrentCultureIgnoreCase);
foreach (var field in fields)
{
if (dict.ContainsKey(field.Name)) dict[field.Name] = field;
else dict.Add(field.Name, field);
}
return dict;
});
19
View Source File : JsonMapper.cs
License : MIT License
Project Creator : 404Lcc
License : MIT License
Project Creator : 404Lcc
private static void AddObjectMetadata (Type type)
{
if (object_metadata.ContainsKey (type))
return;
ObjectMetadata data = new ObjectMetadata ();
if (type.GetInterface ("System.Collections.IDictionary") != null)
data.IsDictionary = true;
data.Properties = new Dictionary<string, PropertyMetadata> ();
foreach (PropertyInfo p_info in type.GetProperties ()) {
if (Attribute.IsDefined(p_info, typeof(JsonIgnoreAttribute), true))
continue;
if (p_info.Name == "Item") {
ParameterInfo[] parameters = p_info.GetIndexParameters ();
if (parameters.Length != 1)
continue;
if (parameters[0].ParameterType == typeof(string))
{
if (type is ILRuntime.Reflection.ILRuntimeWrapperType)
{
data.ElementType = ((ILRuntime.Reflection.ILRuntimeWrapperType)type).CLRType.GenericArguments[1].Value.ReflectionType;
}
else
data.ElementType = p_info.PropertyType;
}
continue;
}
PropertyMetadata p_data = new PropertyMetadata ();
p_data.Info = p_info;
p_data.Type = p_info.PropertyType;
data.Properties.Add (p_info.Name, p_data);
}
foreach (FieldInfo f_info in type.GetFields ()) {
if (Attribute.IsDefined(f_info, typeof(JsonIgnoreAttribute), true))
continue;
PropertyMetadata p_data = new PropertyMetadata ();
p_data.Info = f_info;
p_data.IsField = true;
p_data.Type = f_info.FieldType;
data.Properties.Add (f_info.Name, p_data);
}
lock (object_metadata_lock) {
try {
object_metadata.Add (type, data);
} catch (ArgumentException) {
return;
}
}
}
19
View Source File : JsonMapper.cs
License : MIT License
Project Creator : 404Lcc
License : MIT License
Project Creator : 404Lcc
private static void AddTypeProperties (Type type)
{
if (type_properties.ContainsKey (type))
return;
IList<PropertyMetadata> props = new List<PropertyMetadata> ();
foreach (PropertyInfo p_info in type.GetProperties ()) {
if (Attribute.IsDefined(p_info, typeof(JsonIgnoreAttribute), true))
continue;
if (p_info.Name == "Item")
continue;
PropertyMetadata p_data = new PropertyMetadata ();
p_data.Info = p_info;
p_data.IsField = false;
props.Add (p_data);
}
foreach (FieldInfo f_info in type.GetFields ()) {
if (Attribute.IsDefined(f_info, typeof(JsonIgnoreAttribute), true))
continue;
PropertyMetadata p_data = new PropertyMetadata ();
p_data.Info = f_info;
p_data.IsField = true;
props.Add (p_data);
}
lock (type_properties_lock) {
try {
type_properties.Add (type, props);
} catch (ArgumentException) {
return;
}
}
}
19
View Source File : EnumExtensions.cs
License : MIT License
Project Creator : 52ABP
License : MIT License
Project Creator : 52ABP
public static string ToEnumDescriptionString(this short value, Type enumType)
{
var nvc = new NameValueCollection();
var typeDescription = typeof (DescriptionAttribute);
var fields = enumType.GetFields();
var strText = string.Empty;
var strValue = string.Empty;
foreach (var field in fields)
{
if (field.FieldType.IsEnum)
{
strValue =
((int) enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null)).ToString();
var arr = field.GetCustomAttributes(typeDescription, true);
if (arr.Length > 0)
{
var aa = (DescriptionAttribute) arr[0];
strText = aa.Description;
}
else
{
strText = "";
}
nvc.Add(strValue, strText);
}
}
return nvc[value.ToString()];
}
19
View Source File : JSONParser.cs
License : MIT License
Project Creator : 5minlab
License : MIT License
Project Creator : 5minlab
static object ParseObject(Type type, string json) {
object instance = FormatterServices.GetUninitializedObject(type);
//The list is split into key/value pairs only, this means the split must be divisible by 2 to be valid JSON
List<string> elems = Split(json);
if (elems.Count % 2 != 0)
return instance;
Dictionary<string, FieldInfo> nameToField;
Dictionary<string, PropertyInfo> nameToProperty;
if (!fieldInfoCache.TryGetValue(type, out nameToField)) {
nameToField = type.GetFields().Where(field => field.IsPublic).ToDictionary(field => field.Name);
fieldInfoCache.Add(type, nameToField);
}
if (!propertyInfoCache.TryGetValue(type, out nameToProperty)) {
nameToProperty = type.GetProperties().ToDictionary(p => p.Name);
propertyInfoCache.Add(type, nameToProperty);
}
for (int i = 0; i < elems.Count; i += 2) {
if (elems[i].Length <= 2)
continue;
string key = elems[i].Substring(1, elems[i].Length - 2);
string value = elems[i + 1];
FieldInfo fieldInfo;
PropertyInfo propertyInfo;
if (nameToField.TryGetValue(key, out fieldInfo))
fieldInfo.SetValue(instance, ParseValue(fieldInfo.FieldType, value));
else if (nameToProperty.TryGetValue(key, out propertyInfo))
propertyInfo.SetValue(instance, ParseValue(propertyInfo.PropertyType, value), null);
}
return instance;
}
19
View Source File : ServerInformation.cs
License : Apache License 2.0
Project Creator : AantCoder
License : Apache License 2.0
Project Creator : AantCoder
public ModelInfo GetInfo(ModelInt packet, ServiceContext context)
{
lock (context.Player)
{
switch (packet.Value)
{
case (long)ServerInfoType.Full:
{
var result = GetModelInfo(context.Player);
return result;
}
case (long)ServerInfoType.SendSave:
{
if (context.PossiblyIntruder)
{
context.Disconnect("Possibly intruder");
return null;
}
var result = new ModelInfo();
//передача файла игры, для загрузки WorldLoad();
// файл передать можно только в том случае если файлы прошли проверку
//!Для Pvp проверка нужна всегда, в PvE нет
if (ServerManager.ServerSettings.IsModsWhitelisted)
{
if ((int)context.Player.ApproveLoadWorldReason > 0)
{
context.Player.ExitReason = DisconnectReason.FilesMods;
Loger.Log($"Login : {context.Player.Public.Login} not all files checked,{context.Player.ApproveLoadWorldReason.ToString() } Disconnect");
result.SaveFileData = null;
return result;
}
}
result.SaveFileData = Repository.GetSaveData.LoadPlayerData(context.Player.Public.Login, 1);
if (result.SaveFileData != null)
{
if (context.Player.MailsConfirmationSave.Count > 0)
{
for (int i = 0; i < context.Player.MailsConfirmationSave.Count; i++)
context.Player.MailsConfirmationSave[i].NeedSaveGame = false;
Loger.Log($"MailsConfirmationSave add {context.Player.MailsConfirmationSave.Count} (mails={context.Player.Mails.Count})");
//Ого! Игрок не сохранился после приема письма, с обязательным сохранением после получения
//Отправляем письма ещё раз
if (context.Player.Mails.Count == 0)
{
context.Player.Mails = context.Player.MailsConfirmationSave.ToList();
}
else
{
var ms = context.Player.MailsConfirmationSave
.Where(mcs => context.Player.Mails.Any(m => m.GetHashBase() != mcs.GetHashBase()))
.ToList();
context.Player.Mails.AddRange(ms);
}
Loger.Log($"MailsConfirmationSave (mails={context.Player.Mails.Count})");
}
}
Loger.Log($"Load World for {context.Player.Public.Login}. (mails={context.Player.Mails.Count}, fMails={context.Player.FunctionMails.Count})");
return result;
}
case (long)ServerInfoType.FullWithDescription:
{
var result = GetModelInfo(context.Player);
//result.Description = "";
var displayAttributes = new List<Tuple<int, string>>();
foreach (var prop in typeof(ServerSettings).GetFields())
{
var attribute = prop.GetCustomAttributes(typeof(DisplayAttribute)).FirstOrDefault();
if (attribute is null || !prop.IsPublic)
{
continue;
}
var dispAtr = (DisplayAttribute)attribute;
var strvalue = string.IsNullOrEmpty(dispAtr.GetDescription()) ? prop.Name : dispAtr.GetDescription();
strvalue = strvalue + "=" + prop.GetValue(ServerManager.ServerSettings).ToString();
var order = dispAtr.GetOrder().HasValue ? dispAtr.GetOrder().Value : 0;
displayAttributes.Add(Tuple.Create(order, strvalue));
}
var sb = new StringBuilder();
var sorte = new List<string>(displayAttributes.OrderBy(x => x.Item1).Select(y => y.Item2)).AsReadOnly();
foreach (var prop in sorte)
{
sb.AppendLine(prop);
}
//result.Description = sb.ToString();
return result;
}
case (long)ServerInfoType.Short:
default:
{
// краткая (зарезервированно, пока не используется) fullInfo = false
var result = new ModelInfo();
return result;
}
}
}
}
19
View Source File : InspectorFieldsUtility.cs
License : Apache License 2.0
Project Creator : abist-co-ltd
License : Apache License 2.0
Project Creator : abist-co-ltd
public static List<InspectorFieldData> GetInspectorFields(System.Object target)
{
List<InspectorFieldData> fields = new List<InspectorFieldData>();
Type myType = target.GetType();
foreach (PropertyInfo prop in myType.GetProperties())
{
var attrs = (InspectorField[])prop.GetCustomAttributes(typeof(InspectorField), false);
foreach (var attr in attrs)
{
fields.Add(new InspectorFieldData() { Name = prop.Name, Attributes = attr, Value = prop.GetValue(target, null) });
}
}
foreach (FieldInfo field in myType.GetFields())
{
var attrs = (InspectorField[])field.GetCustomAttributes(typeof(InspectorField), false);
foreach (var attr in attrs)
{
fields.Add(new InspectorFieldData() { Name = field.Name, Attributes = attr, Value = field.GetValue(target) });
}
}
return fields;
}
19
View Source File : InspectorGenericFields.cs
License : Apache License 2.0
Project Creator : abist-co-ltd
License : Apache License 2.0
Project Creator : abist-co-ltd
public static void LoadSettings(T target, List<InspectorPropertySetting> settings)
{
Type myType = target.GetType();
List<PropertyInfo> propInfoList = new List<PropertyInfo>(myType.GetProperties());
for (int i = 0; i < propInfoList.Count; i++)
{
PropertyInfo propInfo = propInfoList[i];
var attrs = (InspectorField[])propInfo.GetCustomAttributes(typeof(InspectorField), false);
foreach (var attr in attrs)
{
object value = InspectorField.GetSettingValue(settings, propInfo.Name);
if (value != null)
{
propInfo.SetValue(target, value);
}
}
}
List<FieldInfo> fieldInfoList = new List<FieldInfo>(myType.GetFields());
for (int i = 0; i < fieldInfoList.Count; i++)
{
FieldInfo fieldInfo = fieldInfoList[i];
var attrs = (InspectorField[])fieldInfo.GetCustomAttributes(typeof(InspectorField), false);
foreach (var attr in attrs)
{
object value = InspectorField.GetSettingValue(settings, fieldInfo.Name);
if (value != null)
{
fieldInfo.SetValue(target, value);
}
}
}
}
19
View Source File : InspectorGenericFields.cs
License : Apache License 2.0
Project Creator : abist-co-ltd
License : Apache License 2.0
Project Creator : abist-co-ltd
public static List<InspectorPropertySetting> GetSettings(T source)
{
Type myType = source.GetType();
List<InspectorPropertySetting> settings = new List<InspectorPropertySetting>();
List<PropertyInfo> propInfoList = new List<PropertyInfo>(myType.GetProperties());
for (int i = 0; i < propInfoList.Count; i++)
{
PropertyInfo propInfo = propInfoList[i];
var attrs = (InspectorField[])propInfo.GetCustomAttributes(typeof(InspectorField), false);
foreach (var attr in attrs)
{
settings.Add(InspectorField.FieldToProperty(attr, propInfo.GetValue(source, null), propInfo.Name));
}
}
List<FieldInfo> fieldInfoList = new List<FieldInfo>(myType.GetFields());
for (int i = 0; i < fieldInfoList.Count; i++)
{
FieldInfo fieldInfo = fieldInfoList[i];
var attrs = (InspectorField[])fieldInfo.GetCustomAttributes(typeof(InspectorField), false);
foreach (var attr in attrs)
{
settings.Add(InspectorField.FieldToProperty(attr, fieldInfo.GetValue(source), fieldInfo.Name));
}
}
return settings;
}
19
View Source File : AssessmentProperties.cs
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
private static HashSet<TResult> GetValues<T, TResult>()
{
var list = typeof(T).GetFields().Select(x => new
{
att = x.GetCustomAttributes(false).OfType<replacedessmentPropertyAttribute>().FirstOrDefault(),
member = x
}).Where(x => x.att != null && x.member.Name != "value__").Select(x => (TResult)x.member.GetValue(null)).ToList();
return new HashSet<TResult>(list);
}
19
View Source File : ClientProperties.cs
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
private static HashSet<TResult> GetValues<T, TResult>()
{
var list =typeof(T).GetFields().Select(x => new
{
att = x.GetCustomAttributes(false).OfType<ServerOnlyAttribute>().FirstOrDefault(),
member = x
}).Where(x => x.att == null && x.member.Name != "value__").Select(x => (TResult)x.member.GetValue(null)).ToList();
return new HashSet<TResult>(list);
}
19
View Source File : EphemeralProperties.cs
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
private static HashSet<T> GetValues<T>()
{
var list = typeof(T).GetFields().Select(x => new
{
att = x.GetCustomAttributes(false).OfType<EphemeralAttribute>().FirstOrDefault(),
member = x
}).Where(x => x.att != null && x.member.Name != "value__").Select(x => (T)x.member.GetValue(null)).ToList();
return new HashSet<T>(list);
}
19
View Source File : SendOnLoginProperties.cs
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
private static HashSet<TResult> GetValues<T, TResult>()
{
var list = typeof(T).GetFields().Select(x => new
{
att = x.GetCustomAttributes(false).OfType<SendOnLoginAttribute>().FirstOrDefault(),
member = x
}).Where(x => x.att != null && x.member.Name != "value__").Select(x => (TResult)x.member.GetValue(null)).ToList();
return new HashSet<TResult>(list);
}
19
View Source File : ServerOnlyProperties.cs
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
License : GNU Affero General Public License v3.0
Project Creator : ACEmulator
private static HashSet<TResult> GetValues<T, TResult>()
{
var list = typeof(T).GetFields().Select(x => new
{
att = x.GetCustomAttributes(false).OfType<ServerOnlyAttribute>().FirstOrDefault(),
member = x
}).Where(x => x.att != null && x.member.Name != "value__").Select(x => (TResult)x.member.GetValue(null)).ToList();
return new HashSet<TResult>(list);
}
19
View Source File : UnknownEnum.cs
License : MIT License
Project Creator : actions
License : MIT License
Project Creator : actions
public static object Parse(Type enumType, string stringValue)
{
var underlyingType = Nullable.GetUnderlyingType(enumType);
enumType = underlyingType != null ? underlyingType : enumType;
var names = Enum.GetNames(enumType);
if (!string.IsNullOrEmpty(stringValue))
{
var match = names.FirstOrDefault(name => string.Equals(name, stringValue, StringComparison.OrdinalIgnoreCase));
if (match != null)
{
return Enum.Parse(enumType, match);
}
// maybe we have an enum member with an EnumMember attribute specifying a custom name
foreach (var field in enumType.GetFields())
{
var enumMemberAttribute = field.GetCustomAttributes(typeof(EnumMemberAttribute), false).FirstOrDefault() as EnumMemberAttribute;
if (enumMemberAttribute != null && string.Equals(enumMemberAttribute.Value, stringValue, StringComparison.OrdinalIgnoreCase))
{
// we already have the field, no need to do enum.parse on it
return field.GetValue(null);
}
}
}
return Enum.Parse(enumType, UnknownName);
}
19
View Source File : FlagsEnum.cs
License : MIT License
Project Creator : actions
License : MIT License
Project Creator : actions
public static object ParseKnownFlags(Type enumType, string stringValue)
{
ArgumentUtility.CheckForNull(enumType, nameof(enumType));
if (!enumType.IsEnum)
{
throw new ArgumentException(PipelinesWebApiResources.FlagEnumTypeRequired());
}
// Check for the flags attribute in debug. Skip this reflection in release.
Debug.replacedert(enumType.GetCustomAttributes(typeof(FlagsAttribute), inherit: false).Any(), "FlagsEnum only intended for enums with the Flags attribute.");
// The exception types below are based on Enum.TryParseEnum (http://index/?query=TryParseEnum&rightProject=mscorlib&file=system%5Cenum.cs&rightSymbol=bhaeh2vnegwo)
if (stringValue == null)
{
throw new ArgumentNullException(stringValue);
}
if (String.IsNullOrWhiteSpace(stringValue))
{
throw new ArgumentException(PipelinesWebApiResources.NonEmptyEnumElementsRequired(stringValue));
}
if (UInt64.TryParse(stringValue, NumberStyles.AllowLeadingSign, CultureInfo.InvariantCulture, out ulong ulongValue))
{
return Enum.Parse(enumType, stringValue);
}
var enumNames = Enum.GetNames(enumType).ToHashSet(name => name, StringComparer.OrdinalIgnoreCase);
var enumMemberMappings = new Lazy<IDictionary<string, string>>(() =>
{
IDictionary<string, string> mappings = null;
foreach (var field in enumType.GetFields())
{
if (field.GetCustomAttributes(typeof(EnumMemberAttribute), false).FirstOrDefault() is EnumMemberAttribute enumMemberAttribute)
{
if (mappings == null)
{
mappings = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
}
mappings.Add(enumMemberAttribute.Value, field.GetValue(null).ToString());
}
}
return mappings;
});
var values = stringValue.Split(s_enumSeparatorCharArray);
var matches = new List<string>();
for (int i = 0; i < values.Length; i++)
{
string value = values[i].Trim();
if (String.IsNullOrEmpty(value))
{
throw new ArgumentException(PipelinesWebApiResources.NonEmptyEnumElementsRequired(stringValue));
}
if (enumNames.Contains(value))
{
matches.Add(value);
}
else if (enumMemberMappings.Value != null && enumMemberMappings.Value.TryGetValue(value, out string matchingValue))
{
matches.Add(matchingValue);
}
}
if (!matches.Any())
{
return Enum.Parse(enumType, "0");
}
string matchesString = String.Join(", ", matches);
return Enum.Parse(enumType, matchesString, ignoreCase: true);
}
19
View Source File : EnumDescriptionTypeConverter.cs
License : MIT License
Project Creator : Actipro
License : MIT License
Project Creator : Actipro
public static Object GetValue(Type type, String description) {
FieldInfo[] fieldInfos = type.GetFields();
foreach (FieldInfo fieldInfo in fieldInfos) {
DescriptionAttribute[] attributes = fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
if (null != attributes && 0 != attributes.Length) {
if (attributes[0].Description == description)
return fieldInfo.GetValue(fieldInfo.Name);
}
if (fieldInfo.Name == description)
return fieldInfo.GetValue(fieldInfo.Name);
}
return description;
}
19
View Source File : CustomIconProvider.android.cs
License : MIT License
Project Creator : adenearnshaw
License : MIT License
Project Creator : adenearnshaw
private int GetId(string memberName)
{
var type = _drawableClreplaced;
object value = type.GetFields().FirstOrDefault(p => p.Name == memberName)?.GetValue(type)
?? type.GetProperties().FirstOrDefault(p => p.Name == memberName)?.GetValue(type);
if (value is int)
return (int)value;
return 0;
}
19
View Source File : ObjectShredder.cs
License : MIT License
Project Creator : Adoxio
License : MIT License
Project Creator : Adoxio
public DataTable ExtendTable(DataTable table, Type type)
{
// Extend the table schema if the input table was null or if the value
// in the sequence is derived from type T.
foreach (FieldInfo f in type.GetFields())
{
if (!_ordinalMap.ContainsKey(f.Name))
{
var ft = f.FieldType;
if (ft.IsGenericType && ft.GetGenericTypeDefinition() == typeof(Nullable<>))
{
ft = Nullable.GetUnderlyingType(ft);
}
// Add the field as a column in the table if it doesn't exist
// already.
DataColumn dc = table.Columns.Contains(f.Name)
? table.Columns[f.Name]
: table.Columns.Add(f.Name, ft);
// Add the field to the ordinal map.
_ordinalMap.Add(f.Name, dc.Ordinal);
}
}
foreach (PropertyInfo p in type.GetProperties())
{
if (!_ordinalMap.ContainsKey(p.Name))
{
var pt = p.PropertyType;
if (pt.IsGenericType && pt.GetGenericTypeDefinition() == typeof(Nullable<>))
{
pt = Nullable.GetUnderlyingType(pt);
}
// Add the property as a column in the table if it doesn't exist
// already.
DataColumn dc = table.Columns.Contains(p.Name)
? table.Columns[p.Name]
: table.Columns.Add(p.Name, pt);
// Add the property to the ordinal map.
_ordinalMap.Add(p.Name, dc.Ordinal);
}
}
// Return the table.
return table;
}
19
View Source File : ObjectShredder.cs
License : MIT License
Project Creator : Adoxio
License : MIT License
Project Creator : Adoxio
public object[] ShredObject(DataTable table, T instance)
{
FieldInfo[] fi = _fi;
PropertyInfo[] pi = _pi;
if (instance.GetType() != typeof(T))
{
// If the instance is derived from T, extend the table schema
// and get the properties and fields.
ExtendTable(table, instance.GetType());
fi = instance.GetType().GetFields();
pi = instance.GetType().GetProperties();
}
// Add the property and field values of the instance to an array.
var values = new object[table.Columns.Count];
foreach (FieldInfo f in fi)
{
values[_ordinalMap[f.Name]] = f.GetValue(instance);
}
foreach (PropertyInfo p in pi)
{
values[_ordinalMap[p.Name]] = p.GetValue(instance, null);
}
// Return the property and field values of the instance.
return values;
}
19
View Source File : EnumHelper.cs
License : Mozilla Public License 2.0
Project Creator : agebullhu
License : Mozilla Public License 2.0
Project Creator : agebullhu
public static List<IEnumInfomation> GetEnumInfomation(Type type)
{
if (type == null)
{
return new List<IEnumInfomation>();
}
if (EnumInfomationMaps.ContainsKey(type))
{
return EnumInfomationMaps[type];
}
var enumFieldInfos = type.GetFields();
var kvs = enumFieldInfos.Where(p => p.Name != "value__").Select(fieldInfo => (IEnumInfomation)new EnumInfomation
{
Caption = fieldInfo.GetDescription(),
Value = Enum.Parse(type, fieldInfo.Name, true),
LValue = Convert.ToInt64(Enum.Parse(type, fieldInfo.Name, true))
}).ToList();
EnumInfomationMaps.Add(type, kvs);
return kvs;
}
19
View Source File : EnumUtils.cs
License : MIT License
Project Creator : akaskela
License : MIT License
Project Creator : akaskela
private static BidirectionalDictionary<string, string> InitializeEnumType(Type type)
{
BidirectionalDictionary<string, string> map = new BidirectionalDictionary<string, string>(
StringComparer.OrdinalIgnoreCase,
StringComparer.OrdinalIgnoreCase);
foreach (FieldInfo f in type.GetFields())
{
string n1 = f.Name;
string n2;
#if !NET20
n2 = f.GetCustomAttributes(typeof(EnumMemberAttribute), true)
.Cast<EnumMemberAttribute>()
.Select(a => a.Value)
.SingleOrDefault() ?? f.Name;
#else
n2 = f.Name;
#endif
string s;
if (map.TryGetBySecond(n2, out s))
{
throw new InvalidOperationException("Enum name '{0}' already exists on enum '{1}'.".FormatWith(CultureInfo.InvariantCulture, n2, type.Name));
}
map.Set(n1, n2);
}
return map;
}
19
View Source File : EnumUtils.cs
License : MIT License
Project Creator : akaskela
License : MIT License
Project Creator : akaskela
public static IList<object> GetValues(Type enumType)
{
if (!enumType.IsEnum())
{
throw new ArgumentException("Type '" + enumType.Name + "' is not an enum.");
}
List<object> values = new List<object>();
var fields = enumType.GetFields().Where(f => f.IsLiteral);
foreach (FieldInfo field in fields)
{
object value = field.GetValue(enumType);
values.Add(value);
}
return values;
}
19
View Source File : EnumUtils.cs
License : MIT License
Project Creator : akaskela
License : MIT License
Project Creator : akaskela
public static IList<string> GetNames(Type enumType)
{
if (!enumType.IsEnum())
{
throw new ArgumentException("Type '" + enumType.Name + "' is not an enum.");
}
List<string> values = new List<string>();
var fields = enumType.GetFields().Where(f => f.IsLiteral);
foreach (FieldInfo field in fields)
{
values.Add(field.Name);
}
return values;
}
19
View Source File : ObjectLists.cs
License : MIT License
Project Creator : AlFasGD
License : MIT License
Project Creator : AlFasGD
public static int[] GetNotGeneralObjectList()
{
List<int> objects = new List<int>();
foreach (var f in typeof(ObjectLists).GetFields().Where(f => f.FieldType == typeof(int[]) && f.IsStatic))
objects.AddRange((int[])f.GetRawConstantValue());
objects.Sort();
return objects.ToArray();
}
19
View Source File : SongInformation.cs
License : MIT License
Project Creator : AlFasGD
License : MIT License
Project Creator : AlFasGD
private static ImmutableArray<string> GetAttributedFields<TAttribute>()
where TAttribute : Attribute
{
return typeof(SongInformation).GetFields()
.Where(f => f.GetCustomAttributes<TAttribute>().Any())
.Select(f => f.GetRawConstantValue() as string)
.ToImmutableArray();
}
19
View Source File : EditorUI.cs
License : MIT License
Project Creator : allenwp
License : MIT License
Project Creator : allenwp
static void SubmitObjectInspector(object selectedObject)
{
ImGuiTreeNodeFlags collapsingHeaderFlags = ImGuiTreeNodeFlags.CollapsingHeader;
collapsingHeaderFlags |= ImGuiTreeNodeFlags.DefaultOpen;
var selectedType = selectedObject.GetType();
if (ImGui.CollapsingHeader("Fields", collapsingHeaderFlags))
{
var fields = selectedType.GetFields();
foreach (var info in fields.Where(field => !field.IsLiteral && !field.IsInitOnly))
{
SubmitFieldPropertyInspector(new FieldPropertyListInfo(info, selectedObject), selectedObject);
}
}
var properties = selectedType.GetProperties();
if (ImGui.CollapsingHeader("Properties", collapsingHeaderFlags))
{
// When SetMethod is private, it will still be writable so long as it's clreplaced isn't inherited, so check to see if it's public too for the behaviour I want.
foreach (var info in properties.Where(prop => prop.CanRead && prop.CanWrite && prop.SetMethod.IsPublic))
{
SubmitFieldPropertyInspector(new FieldPropertyListInfo(info, selectedObject), selectedObject);
}
}
if (ImGui.CollapsingHeader("Read-Only Properties", collapsingHeaderFlags))
{
// When SetMethod is private, it will still be writable so long as it's clreplaced isn't inherited, so check to see if it's public too for the behaviour I want.
foreach (var info in properties.Where(prop => prop.CanRead && (!prop.CanWrite || !prop.SetMethod.IsPublic)))
{
var fieldPropertyInfo = new FieldPropertyListInfo(info, selectedObject);
SubmitReadonlyFieldPropertyInspector(fieldPropertyInfo);
SubmitHelpMarker(fieldPropertyInfo);
}
}
}
19
View Source File : BaseClone.cs
License : MIT License
Project Creator : alonsoalon
License : MIT License
Project Creator : alonsoalon
public object Clone()
{
//首先我们建立指定类型的一个实例
object newObject = Activator.CreateInstance(this.GetType());
//我们取得新的类型实例的字段数组。
FieldInfo[] fields = newObject.GetType().GetFields();
int i = 0;
foreach (FieldInfo fi in this.GetType().GetFields())
{
//我们判断字段是否支持ICloneable接口。
Type ICloneType = fi.FieldType.GetInterface("ICloneable", true);
if (ICloneType != null)
{
//取得对象的Icloneable接口。
ICloneable IClone = (ICloneable)fi.GetValue(this);
//我们使用克隆方法给字段设定新值。
fields[i].SetValue(newObject, IClone.Clone());
}
else
{
// 如果该字段部支持Icloneable接口,直接设置即可。
fields[i].SetValue(newObject, fi.GetValue(this));
}
//现在我们检查该对象是否支持IEnumerable接口,如果支持,
//我们还需要枚举其所有项并检查他们是否支持IList 或 IDictionary 接口。
Type IEnumerableType = fi.FieldType.GetInterface("IEnumerable", true);
if (IEnumerableType != null)
{
//取得该字段的IEnumerable接口
IEnumerable IEnum = (IEnumerable)fi.GetValue(this);
Type IListType = fields[i].FieldType.GetInterface("IList", true);
Type IDicType = fields[i].FieldType.GetInterface("IDictionary", true);
int j = 0;
if (IListType != null)
{
//取得IList接口。
IList list = (IList)fields[i].GetValue(newObject);
foreach (object obj in IEnum)
{
//查看当前项是否支持支持ICloneable 接口。
ICloneType = obj.GetType().GetInterface("ICloneable", true);
if (ICloneType != null)
{
//如果支持ICloneable 接口,
//我们用它李设置列表中的对象的克隆
ICloneable clone = (ICloneable)obj;
list[j] = clone.Clone();
}
//注意:如果列表中的项不支持ICloneable接口,那么
//在克隆列表的项将与原列表对应项相同
//(只要该类型是引用类型)
j++;
}
}
else if (IDicType != null)
{
//取得IDictionary 接口
IDictionary dic = (IDictionary)fields[i].GetValue(newObject);
j = 0;
foreach (DictionaryEntry de in IEnum)
{
//查看当前项是否支持支持ICloneable 接口。
ICloneType = de.Value.GetType().
GetInterface("ICloneable", true);
if (ICloneType != null)
{
ICloneable clone = (ICloneable)de.Value;
dic[de.Key] = clone.Clone();
}
j++;
}
}
}
i++;
}
return newObject;
}
19
View Source File : CacheAOPbase.cs
License : Apache License 2.0
Project Creator : anjoy8
License : Apache License 2.0
Project Creator : anjoy8
private static string In(MethodCallExpression expression, object isTrue)
{
var Argument1 = (expression.Arguments[0] as MemberExpression).Expression as ConstantExpression;
var Argument2 = expression.Arguments[1] as MemberExpression;
var Field_Array = Argument1.Value.GetType().GetFields().First();
object[] Array = Field_Array.GetValue(Argument1.Value) as object[];
List<string> SetInPara = new List<string>();
for (int i = 0; i < Array.Length; i++)
{
string Name_para = "InParameter" + i;
string Value = Array[i].ToString();
SetInPara.Add(Value);
}
string Name = Argument2.Member.Name;
string Operator = Convert.ToBoolean(isTrue) ? "in" : " not in";
string CompName = string.Join(",", SetInPara);
string Result = $"{Name} {Operator} ({CompName})";
return Result;
}
19
View Source File : AnalyseDisplayViewModel.cs
License : Apache License 2.0
Project Creator : anmcgrath
License : Apache License 2.0
Project Creator : anmcgrath
private void SetNormalisationChoices()
{
var dcs = new DicomColors();
var fields = typeof(DicomColors).GetFields();
foreach (var field in fields)
AvailableColors.Add((DicomColor)field.GetValue(dcs));
RelativeNormalisationOptions = new List<RelativeNormalisationOption>()
{
RelativeNormalisationOption.Max,
RelativeNormalisationOption.POI,
};
NormalisationTypes = new List<NormalisationType>()
{
NormalisationType.Relative,
NormalisationType.Absolute
};
POIs = new ObservableCollection<PointOfInterest>();
}
19
View Source File : JsonMapper.cs
License : MIT License
Project Creator : AnotherEnd15
License : MIT License
Project Creator : AnotherEnd15
private static void AddObjectMetadata(Type type)
{
if (object_metadata.ContainsKey(type))
return;
ObjectMetadata data = new ObjectMetadata();
if (type.GetInterface("System.Collections.IDictionary") != null)
data.IsDictionary = true;
data.Properties = new Dictionary<string, PropertyMetadata>();
foreach (PropertyInfo p_info in type.GetProperties())
{
if (p_info.Name == "Item")
{
ParameterInfo[] parameters = p_info.GetIndexParameters();
if (parameters.Length != 1)
continue;
if (parameters[0].ParameterType == typeof (string))
data.ElementType = p_info.PropertyType;
continue;
}
PropertyMetadata p_data = new PropertyMetadata();
p_data.Info = p_info;
p_data.Type = p_info.PropertyType;
data.Properties.Add(p_info.Name, p_data);
}
foreach (FieldInfo f_info in type.GetFields())
{
PropertyMetadata p_data = new PropertyMetadata();
p_data.Info = f_info;
p_data.IsField = true;
p_data.Type = f_info.FieldType;
data.Properties.Add(f_info.Name, p_data);
}
lock (object_metadata_lock)
{
try
{
object_metadata.Add(type, data);
}
catch (ArgumentException)
{
return;
}
}
}
19
View Source File : JsonMapper.cs
License : MIT License
Project Creator : AnotherEnd15
License : MIT License
Project Creator : AnotherEnd15
private static void AddTypeProperties(Type type)
{
if (type_properties.ContainsKey(type))
return;
IList<PropertyMetadata> props = new List<PropertyMetadata>();
foreach (PropertyInfo p_info in type.GetProperties())
{
if (p_info.Name == "Item")
continue;
PropertyMetadata p_data = new PropertyMetadata();
p_data.Info = p_info;
p_data.IsField = false;
props.Add(p_data);
}
foreach (FieldInfo f_info in type.GetFields())
{
PropertyMetadata p_data = new PropertyMetadata();
p_data.Info = f_info;
p_data.IsField = true;
props.Add(p_data);
}
lock (type_properties_lock)
{
try
{
type_properties.Add(type, props);
}
catch (ArgumentException)
{
return;
}
}
}
19
View Source File : ItemId.cs
License : Apache License 2.0
Project Creator : anpShawn
License : Apache License 2.0
Project Creator : anpShawn
public static void CacheIds()
{
validIds = new List<string>();
Type t = typeof(ItemId);
Type tString = typeof(string);
FieldInfo[] fields = t.GetFields();
FieldInfo f;
for(int i=0; i< fields.Length; i++)
{
f = fields[i];
if(f.IsStatic && f.IsPublic && f.FieldType == tString)
{
validIds.Add( (string)f.GetValue(null) );
}
}
}
19
View Source File : SkillId.cs
License : Apache License 2.0
Project Creator : anpShawn
License : Apache License 2.0
Project Creator : anpShawn
public static void CacheIds()
{
validIds = new List<string>();
Type t = typeof(SkillId);
Type tString = typeof(string);
FieldInfo[] fields = t.GetFields();
FieldInfo f;
for(int i=0; i< fields.Length; i++)
{
f = fields[i];
if(f.IsStatic && f.IsPublic && f.FieldType == tString)
{
validIds.Add( (string)f.GetValue(null) );
//Main.Trace(f.GetValue(null));
}
}
}
19
View Source File : Stats.cs
License : Apache License 2.0
Project Creator : anpShawn
License : Apache License 2.0
Project Creator : anpShawn
public static void BuildDefaultStats()
{
//use reflection to build a list of default stats based on what the Stat type contains
defaultStats = new Dictionary<string, long>();
Type typeStat = typeof(Stat);
Type typeString = typeof(string);
FieldInfo[] statFields = typeStat.GetFields();
FieldInfo curFieldInfo;
string curKey;
nonbasicKeys = new List<string>();
for(int i = 0; i< statFields.Length; i++)
{
curFieldInfo = statFields[i];
if(curFieldInfo.FieldType == typeString)
{
curKey = curFieldInfo.GetValue(null).ToString();
defaultStats.Add(curKey, 0);
//also build nonbasic stat keys while here
if (curKey != Stat.hp && curKey != Stat.mp && curKey != Stat.atk && curKey != Stat.max_hp && curKey != Stat.max_mp)
nonbasicKeys.Add(curKey);
}
}
percentageBasedKeys = new List<string>() { Stat.crit_bonus, Stat.crit_chance, Stat.magic_boost, Stat.gold_find, Stat.essence_find, Stat.chance_for_dungeon_keys, Stat.evade,
Stat.dmg_reduction, Stat.dmg_reflection, Stat.status_resist, Stat.chance_to_psn, Stat.chance_to_burn, Stat.chance_to_stun, Stat.chance_for_food, Stat.mastery_xp_boost,
Stat.atk_boost, Stat.mp_boost, Stat.hp_boost, Stat.phys_boost};
wholePartyKeys = new string[] { Stat.gold_find, Stat.item_find, Stat.essence_find, Stat.chance_for_dungeon_keys, Stat.mastery_xp_boost, Stat.ore_find, Stat.gold_multiplier };
}
19
View Source File : Utils.cs
License : Apache License 2.0
Project Creator : AnthonyLloyd
License : Apache License 2.0
Project Creator : AnthonyLloyd
static string PrintFields(object o)
{
var sb = new StringBuilder("(");
var fields = o.GetType().GetFields();
sb.Append(Print(fields[0].GetValue(o)));
for (int i = 1; i < fields.Length; i++)
{
sb.Append(", ");
sb.Append(Print(fields[i].GetValue(o)));
}
sb.Append(")");
return sb.ToString();
}
19
View Source File : H5Utils.cs
License : GNU Lesser General Public License v3.0
Project Creator : Apollo3zehn
License : GNU Lesser General Public License v3.0
Project Creator : Apollo3zehn
public static unsafe T[] ReadCompound<T>(
DatatypeMessage datatype,
DataspaceMessage dataspace,
Superblock superblock,
Span<byte> data,
Func<FieldInfo, string> getName) where T : struct
{
if (datatype.Clreplaced != DatatypeMessageClreplaced.Compound)
throw new Exception($"This method can only be used for data type clreplaced '{DatatypeMessageClreplaced.Compound}'.");
var type = typeof(T);
var fieldInfoMap = new Dictionary<string, FieldProperties>();
foreach (var fieldInfo in type.GetFields())
{
var name = getName(fieldInfo);
var isNotSupported = H5Utils.IsReferenceOrContainsReferences(fieldInfo.FieldType)
&& fieldInfo.FieldType != typeof(string);
if (isNotSupported)
throw new Exception("Nested nullable fields are not supported.");
fieldInfoMap[name] = new FieldProperties()
{
FieldInfo = fieldInfo,
Offset = Marshal.OffsetOf(type, fieldInfo.Name)
};
}
var properties = datatype.Properties
.Cast<CompoundPropertyDescription>()
.ToList();
var sourceOffset = 0UL;
var sourceRawBytes = data;
var sourceElementSize = datatype.Size;
var targetArraySize = H5Utils.CalculateSize(dataspace.DimensionSizes, dataspace.Type);
var targetArray = new T[targetArraySize];
var targetElementSize = Marshal.SizeOf<T>();
for (int i = 0; i < targetArray.Length; i++)
{
var targetRawBytes = new byte[targetElementSize];
var stringMap = new Dictionary<FieldProperties, string>();
foreach (var property in properties)
{
if (!fieldInfoMap.TryGetValue(property.Name, out var fieldInfo))
throw new Exception($"The property named '{property.Name}' in the HDF5 data type does not exist in the provided structure of type '{typeof(T)}'.");
var fieldSize = (int)property.MemberTypeMessage.Size;
// strings
if (fieldInfo.FieldInfo.FieldType == typeof(string))
{
var sourceIndex = (int)(sourceOffset + property.MemberByteOffset);
var sourceIndexEnd = sourceIndex + fieldSize;
var targetIndex = fieldInfo.Offset.ToInt64();
var value = H5Utils.ReadString(property.MemberTypeMessage, sourceRawBytes[sourceIndex..sourceIndexEnd], superblock);
stringMap[fieldInfo] = value[0];
}
// other value types
else
{
for (uint j = 0; j < fieldSize; j++)
{
var sourceIndex = sourceOffset + property.MemberByteOffset + j;
var targetIndex = fieldInfo.Offset.ToInt64() + j;
targetRawBytes[targetIndex] = sourceRawBytes[(int)sourceIndex];
}
}
}
sourceOffset += sourceElementSize;
fixed (byte* ptr = targetRawBytes.replacedpan())
{
// http://benbowen.blog/post/fun_with_makeref/
// https://stackoverflow.com/questions/4764573/why-is-typedreference-behind-the-scenes-its-so-fast-and-safe-almost-magical
// Both do not work because struct layout is different with __makeref:
// https://stackoverflow.com/questions/1918037/layout-of-net-value-type-in-memory
targetArray[i] = Marshal.PtrToStructure<T>(new IntPtr(ptr));
foreach (var entry in stringMap)
{
var reference = __makeref(targetArray[i]);
entry.Key.FieldInfo.SetValueDirect(reference, entry.Value);
}
}
}
return targetArray;
}
19
View Source File : TestUtils.cs
License : GNU Lesser General Public License v3.0
Project Creator : Apollo3zehn
License : GNU Lesser General Public License v3.0
Project Creator : Apollo3zehn
private static long GetHdfTypeIdFromType(Type type)
{
var elementType = type.IsArray ? type.GetElementType() : type;
if (elementType == typeof(bool))
return H5T.NATIVE_UINT8;
else if (elementType == typeof(byte))
return H5T.NATIVE_UINT8;
else if (elementType == typeof(sbyte))
return H5T.NATIVE_INT8;
else if (elementType == typeof(ushort))
return H5T.NATIVE_UINT16;
else if (elementType == typeof(short))
return H5T.NATIVE_INT16;
else if (elementType == typeof(uint))
return H5T.NATIVE_UINT32;
else if (elementType == typeof(int))
return H5T.NATIVE_INT32;
else if (elementType == typeof(ulong))
return H5T.NATIVE_UINT64;
else if (elementType == typeof(long))
return H5T.NATIVE_INT64;
else if (elementType == typeof(float))
return H5T.NATIVE_FLOAT;
else if (elementType == typeof(double))
return H5T.NATIVE_DOUBLE;
// issues: https://en.wikipedia.org/wiki/Long_double
//else if (elementType == typeof(decimal))
// return H5T.NATIVE_LDOUBLE;
else if (elementType.IsEnum)
{
var baseTypeId = TestUtils.GetHdfTypeIdFromType(Enum.GetUnderlyingType(elementType));
var typeId = H5T.enum_create(baseTypeId);
foreach (var value in Enum.GetValues(type))
{
var value_converted = Convert.ToInt64(value);
var name = Enum.GetName(type, value_converted);
var handle = GCHandle.Alloc(value_converted, GCHandleType.Pinned);
H5T.enum_insert(typeId, name, handle.AddrOfPinnedObject());
}
return typeId;
}
else if (elementType == typeof(string) || elementType == typeof(IntPtr))
{
var typeId = H5T.copy(H5T.C_S1);
H5T.set_size(typeId, H5T.VARIABLE);
H5T.set_cset(typeId, H5T.cset_t.UTF8);
return typeId;
}
else if (elementType.IsValueType && !elementType.IsPrimitive)
{
var typeId = H5T.create(H5T.clreplaced_t.COMPOUND, new IntPtr(Marshal.SizeOf(elementType)));
foreach (var fieldInfo in elementType.GetFields())
{
var fieldType = TestUtils.GetHdfTypeIdFromType(fieldInfo.FieldType);
var attribute = fieldInfo.GetCustomAttribute<H5NameAttribute>(true);
var hdfFieldName = attribute is not null ? attribute.Name : fieldInfo.Name;
H5T.insert(typeId, hdfFieldName, Marshal.OffsetOf(elementType, fieldInfo.Name), fieldType);
if (H5I.is_valid(fieldType) > 0)
H5T.close(fieldType);
}
return typeId;
}
else
{
throw new NotSupportedException();
}
}
19
View Source File : WorkSheet.cs
License : Apache License 2.0
Project Creator : Appdynamics
License : Apache License 2.0
Project Creator : Appdynamics
public void LoadFromCollectionTest()
{
var ws = _pck.Workbook.Worksheets.Add("LoadFromCollection");
List<TestDTO> list = new List<TestDTO>();
list.Add(new TestDTO() { Id = 1, Name = "Item1", Boolean = false, Date = new DateTime(2011, 1, 1), dto = null, NameVar = "Field 1" });
list.Add(new TestDTO() { Id = 2, Name = "Item2", Boolean = true, Date = new DateTime(2011, 1, 15), dto = new TestDTO(), NameVar = "Field 2" });
list.Add(new TestDTO() { Id = 3, Name = "Item3", Boolean = false, Date = new DateTime(2011, 2, 1), dto = null, NameVar = "Field 3" });
list.Add(new TestDTO() { Id = 4, Name = "Item4", Boolean = true, Date = new DateTime(2011, 4, 19), dto = list[1], NameVar = "Field 4" });
list.Add(new TestDTO() { Id = 5, Name = "Item5", Boolean = false, Date = new DateTime(2011, 5, 8), dto = null, NameVar = "Field 5" });
list.Add(new TestDTO() { Id = 6, Name = "Item6", Boolean = true, Date = new DateTime(2010, 3, 27), dto = null, NameVar = "Field 6" });
list.Add(new TestDTO() { Id = 7, Name = "Item7", Boolean = false, Date = new DateTime(2009, 1, 5), dto = list[3], NameVar = "Field 7" });
list.Add(new TestDTO() { Id = 8, Name = "Item8", Boolean = true, Date = new DateTime(2018, 12, 31), dto = null, NameVar = "Field 8" });
list.Add(new TestDTO() { Id = 9, Name = "Item9", Boolean = false, Date = new DateTime(2010, 2, 1), dto = null, NameVar = "Field 9" });
ws.Cells["A1"].LoadFromCollection(list, true);
ws.Cells["A30"].LoadFromCollection(list, true, OfficeOpenXml.Table.TableStyles.Medium9, BindingFlags.Instance | BindingFlags.Instance, typeof(TestDTO).GetFields());
ws.Cells["A45"].LoadFromCollection(list, true, OfficeOpenXml.Table.TableStyles.Light1, BindingFlags.Instance | BindingFlags.Instance, new MemberInfo[] { typeof(TestDTO).GetMethod("GetNameID"), typeof(TestDTO).GetField("NameVar") });
ws.Cells["J1"].LoadFromCollection(from l in list where l.Boolean orderby l.Date select new { Name = l.Name, Id = l.Id, Date = l.Date, NameVariable = l.NameVar }, true, OfficeOpenXml.Table.TableStyles.Dark4);
var ints = new int[] { 1, 3, 4, 76, 2, 5 };
ws.Cells["A15"].Value = ints;
ws = _pck.Workbook.Worksheets.Add("LoadFromCollection_Inherited");
List<InheritTestDTO> inhList = new List<InheritTestDTO>();
inhList.Add(new InheritTestDTO() { Id = 1, Name = "Item1", Boolean = false, Date = new DateTime(2011, 1, 1), dto = null, NameVar = "Field 1", InheritedProp="Inherited 1" });
inhList.Add(new InheritTestDTO() { Id = 2, Name = "Item2", Boolean = true, Date = new DateTime(2011, 1, 15), dto = new TestDTO(), NameVar = "Field 2", InheritedProp = "Inherited 2" });
ws.Cells["A1"].LoadFromCollection(inhList, true);
replacedert.AreEqual("Inherited 2", ws.Cells[3, 1].Value);
ws.Cells["A5"].LoadFromCollection(inhList, true, TableStyles.None, BindingFlags.Public | BindingFlags.Instance, new MemberInfo[]{typeof(InheritTestDTO).GetProperty("InheritedProp"), typeof(TestDTO).GetProperty("Name") });
replacedert.AreEqual("Inherited 2", ws.Cells[7, 1].Value);
}
19
View Source File : WorkSheet.cs
License : Apache License 2.0
Project Creator : Appdynamics
License : Apache License 2.0
Project Creator : Appdynamics
public void LoadFromEmptyCollectionTest()
{
if (_pck == null) _pck = new ExcelPackage();
var ws = _pck.Workbook.Worksheets.Add("LoadFromEmpyCollection");
List<TestDTO> listDTO = new List<TestDTO>(0);
//List<int> list = new List<int>(0);
ws.Cells["A1"].LoadFromCollection(listDTO, true);
ws.Cells["A5"].LoadFromCollection(listDTO, true, OfficeOpenXml.Table.TableStyles.Medium9, BindingFlags.Instance | BindingFlags.Instance, typeof(TestDTO).GetFields());
ws.Cells["A10"].LoadFromCollection(listDTO, true, OfficeOpenXml.Table.TableStyles.Light1, BindingFlags.Instance | BindingFlags.Instance, new MemberInfo[] { typeof(TestDTO).GetMethod("GetNameID"), typeof(TestDTO).GetField("NameVar") });
ws.Cells["A15"].LoadFromCollection(from l in listDTO where l.Boolean orderby l.Date select new { Name = l.Name, Id = l.Id, Date = l.Date, NameVariable = l.NameVar }, true, OfficeOpenXml.Table.TableStyles.Dark4);
ws.Cells["A20"].LoadFromCollection(listDTO, false);
}
19
View Source File : PlanetProfile.cs
License : MIT License
Project Creator : Arghonot
License : MIT License
Project Creator : Arghonot
public Graph.GenericDicionnary GetArguments()
{
Graph.GenericDicionnary gd = new Graph.GenericDicionnary();
foreach (var item in this.GetType().GetFields())
{
gd.Add(item.Name, item.GetValue(this));
//if (item.Name == "frequency") Debug.Log(item.Name + " " + (double)item.GetValue(this));
}
//Debug.Log("there are : " + gd.Count.ToString() + " keys in the dictionnary");
return gd;
}
19
View Source File : ShredObjectToDataTable.cs
License : MIT License
Project Creator : ARKlab
License : MIT License
Project Creator : ARKlab
public object[] ShredObject(DataTable table, T instance)
{
FieldInfo[] fi = _fi;
PropertyInfo[] pi = _pi;
if (instance.GetType() != typeof(T))
{
// If the instance is derived from T, extend the table schema
// and get the properties and fields.
ExtendTable(table, instance.GetType());
fi = instance.GetType().GetFields();
pi = instance.GetType().GetProperties();
}
// Add the property and field values of the instance to an array.
object[] values = new object[table.Columns.Count];
foreach (FieldInfo f in fi)
{
values[_ordinalMap[f.Name]] = _convertColumnValue(f.GetValue(instance));
}
foreach (PropertyInfo p in pi)
{
values[_ordinalMap[p.Name]] = _convertColumnValue(p.GetValue(instance, null));
}
// Return the property and field values of the instance.
return values;
}
19
View Source File : ShredObjectToDataTable.cs
License : MIT License
Project Creator : ARKlab
License : MIT License
Project Creator : ARKlab
public DataTable ExtendTable(DataTable table, Type type)
{
// Extend the table schema if the input table was null or if the value
// in the sequence is derived from type T.
foreach (FieldInfo f in type.GetFields())
{
if (!_ordinalMap.ContainsKey(f.Name))
{
var t = _deriveColumnType(f.FieldType);
// Add the field as a column in the table if it doesn't exist
// already.
DataColumn dc = table.Columns.Contains(f.Name) ? table.Columns[f.Name]
: table.Columns.Add(f.Name, t);
// Add the field to the ordinal map.
_ordinalMap.Add(f.Name, dc.Ordinal);
}
}
foreach (PropertyInfo p in type.GetProperties())
{
if (!_ordinalMap.ContainsKey(p.Name))
{
var t = _deriveColumnType(p.PropertyType);
// Add the property as a column in the table if it doesn't exist
// already.
DataColumn dc = table.Columns.Contains(p.Name) ? table.Columns[p.Name]
: table.Columns.Add(p.Name, t);
// Add the property to the ordinal map.
_ordinalMap.Add(p.Name, dc.Ordinal);
}
}
// Return the table.
return table;
}
19
View Source File : TrainingCatalog.cs
License : MIT License
Project Creator : aslotte
License : MIT License
Project Creator : aslotte
public async Task LogHyperParametersAsync<T>(Guid runId, T trainer) where T : clreplaced
{
var trainerType = trainer.GetType();
// All trainers have an Options object which is used to set the parameters for the training.
var trainerField = trainerType.GetRuntimeFields().FirstOrDefault(f => f.Name.Contains("Options"));
if (trainerField != null)
{
var options = Dynamic.InvokeGet(trainer, trainerField.Name);
foreach (var optionField in trainerField.FieldType.GetFields())
{
// Tracking only primitive types as of now
if (optionField.FieldType.IsPrimitive || optionField.FieldType == typeof(Decimal) || optionField.FieldType == typeof(String))
{
var value = optionField.GetValue(options);
if (value != null)
await hyperParameterRepository.LogHyperParameterAsync(runId, optionField.Name, value.ToString());
}
}
}
}
19
View Source File : Export.cs
License : MIT License
Project Creator : atenfyr
License : MIT License
Project Creator : atenfyr
private static void InitAllFields()
{
if (_allFields != null) return;
_allFields = typeof(Export).GetFields().Where(fld => fld.IsDefined(typeof(FObjectExportFieldAttribute), true)).OrderBy(fld => ((FObjectExportFieldAttribute[])fld.GetCustomAttributes(typeof(FObjectExportFieldAttribute), true))[0].DisplayingIndex).ToArray();
}
19
View Source File : FsmManager.cs
License : GNU General Public License v3.0
Project Creator : Athlon007
License : GNU General Public License v3.0
Project Creator : Athlon007
public static void ResetAll()
{
FieldInfo[] fields = typeof(FsmManager).GetFields();
// Loop through fields
foreach (var field in fields)
{
field.SetValue(field, null);
}
}
19
View Source File : ConsoleCommands.cs
License : GNU General Public License v3.0
Project Creator : Athlon007
License : GNU General Public License v3.0
Project Creator : Athlon007
public override void Run(string[] args)
{
if (args.Length == 0)
{
ModConsole.Log("See \"mop help\" for command list.");
return;
}
switch (args[0])
{
default:
ModConsole.Log("Invalid command. Type \"mop help\" for command list.");
break;
case "help":
if (args.Length > 1)
{
string[] helpList = HelpList.Split('\n');
bool commandsFound = false;
foreach (string s in helpList)
{
if (s.Split('-')[0].Contains(args[1]))
{
ModConsole.Log(s);
commandsFound = true;
}
}
if (!commandsFound)
ModConsole.Log($"Command {args[1]} not found.");
return;
}
ModConsole.Log(HelpList);
break;
case "rules":
if (args.Length > 1 && args[1] == "roll")
{
ModConsole.Log("\n<color=yellow>You know the rules and so do I\n" +
"A full commitment's what I'm thinking of\n" +
"You wouldn't get this from any other guy\n" +
"I just wanna tell you how I'm feeling\n" +
"Gotta make you understand\n" +
"Never gonna give you up\n" +
"Never gonna let you down\n" +
"Never gonna run around and desert you\n" +
"Never gonna make you cry\n" +
"Never gonna say goodbye\n" +
"Never gonna tell a lie and hurt you</color>\n\n");
return;
}
if (RulesManager.Instance.IgnoreRules.Count > 0)
{
ModConsole.Log("<color=yellow><b>Ignore Rules</b></color>");
foreach (IgnoreRule r in RulesManager.Instance.IgnoreRules)
ModConsole.Log($"<b>Object:</b> {r.ObjectName}");
}
if (RulesManager.Instance.IgnoreRulesAtPlaces.Count > 0)
{
ModConsole.Log("\n<color=yellow><b>Ignore Rules At Place</b></color>");
foreach (IgnoreRuleAtPlace r in RulesManager.Instance.IgnoreRulesAtPlaces)
ModConsole.Log($"<b>Place:</b> {r.Place} <b>Object:</b> {r.ObjectName}");
}
if (RulesManager.Instance.ToggleRules.Count > 0)
{
ModConsole.Log("\n<color=yellow><b>Toggle Rules</b></color>");
foreach (ToggleRule r in RulesManager.Instance.ToggleRules)
ModConsole.Log($"<b>Object:</b> {r.ObjectName} <b>Toggle Mode:</b> {r.ToggleMode}");
}
if (RulesManager.Instance.NewSectors.Count > 0)
{
ModConsole.Log("\n<color=yellow><b>New Sectors</b></color>");
foreach (NewSector r in RulesManager.Instance.NewSectors)
ModConsole.Log($"<b>Pos:</b> {r.Position} <b>Scale:</b> {r.Scale} <b>Rot:</b> {r.Rotation} <b>Ignore:</b> {string.Join(", ", r.Whitelist)}");
}
ModConsole.Log("\n<color=yellow><b>Special Rules</b></color>");
// Obtain all fields
FieldInfo[] fields = typeof(SpecialRules).GetFields();
// Loop through fields
foreach (var field in fields)
{
ModConsole.Log($"<b>{field.Name}</b>: {field.GetValue(RulesManager.Instance.SpecialRules)}");
}
// List rule files.
string output = "\n<color=yellow><b>Rule Files</b></color>\n";
foreach (string ruleFile in RulesManager.Instance.RuleFileNames)
output += $"{ruleFile}\n";
ModConsole.Log(output);
break;
case "reload":
if (ModLoader.CurrentScene != CurrentScene.MainMenu)
{
ModConsole.Log("You can only reload rule files in the main menu");
return;
}
RulesManager.Instance.WipeAll(false);
break;
case "new":
string path = $"{MOP.ModConfigPath}/Custom.txt";
if (args.Length > 1)
{
path = $"{MOP.ModConfigPath}/{args[1]}.mopconfig";
}
if (File.Exists(path))
{
ModConsole.Log("Custom file already exists. Use \"mop open\" to edit it now.");
return;
}
File.WriteAllText(path, "## Every line which starts with ## will be ignored.\n" +
"## All new flags MUST be written in a new line.\n" +
"## Visit http://athlon.kkmr.pl/mop/wiki/#/rulefiles_commands for doreplacedentation.\n" +
"## WARNING: Using custom rule files may cause issues. Use only at your own risk!");
Process.Start(path);
if (path.EndsWith("Custom.txt"))
{
ModConsole.Log("A custom rule file has been created. You can find it as Custom.txt.\n" +
"<color=red>Careless use of rule files may cause bugs and glitchess. Use only at yout own risk!</color>");
}
else
{
ModConsole.Log($"A rule file for {args[1]} mod has been created.");
}
break;
case "version":
ModConsole.Log(MOP.ModVersion);
break;
case "cowsay":
string say = string.Join(" ", args, 1, args.Length - 1);
switch (say.ToLower())
{
case "tell me your secrets":
say = "all pls fix and no appreciation makes Athlon an angry boy";
break;
case "tell me your wisdoms":
say = "people saying that MOP is just improved KruFPS are straight up wrong";
break;
case "wieski":
say = "it really do be like dat doe sometimes";
break;
case "embu":
say = "pee vee good";
break;
case "owo":
say = "UwU";
break;
case "uwu":
say = "OwO";
break;
case "mop sucks":
say = "no u";
Process.Start("https://www.youtube.com/watch?v=dQw4w9WgXcQ");
break;
}
ModConsole.Log($"< {say} >\n" +
" \\ ^__^\n" +
" \\ (oo)\\____\n" +
" (__)\\ )\\/\\\n" +
" || ----w |\n" +
" || || ");
break;
case "open-config":
Process.Start(MOP.ModConfigPath);
break;
case "open":
if (args.Length == 1)
{
ModConsole.Log($"Missing argument.");
return;
}
if (args[1].StartsWith("Custom") || args[1].StartsWith("custom"))
{
if (!args[1].EndsWith(".txt"))
args[1] += ".txt";
}
else
{
if (!args[1].EndsWith(".mopconfig"))
args[1] += ".mopconfig";
}
if (!File.Exists($"{MOP.ModConfigPath}/{args[1]}"))
{
ModConsole.Log($"File {args[1]} doesn't exist.");
return;
}
Process.Start($"{MOP.ModConfigPath}/{args[1]}");
break;
case "delete":
if (args.Length == 1)
{
ModConsole.Log($"Missing argument.");
return;
}
if (args[1].StartsWith("Custom") && !args[1].EndsWith(".txt"))
{
args[1] += ".txt";
}
else
{
if (!args[1].EndsWith(".mopconfig"))
args[1] += ".mopconfig";
}
if (!File.Exists($"{MOP.ModConfigPath}/{args[1]}"))
{
ModConsole.Log($"File {args[1]} doesn't exist.");
return;
}
File.Delete($"{MOP.ModConfigPath}/{args[1]}");
break;
case "cat":
if (args.Length == 1)
{
ModConsole.Log($"Missing argument.");
return;
}
if (args[1].StartsWith("Custom") && !args[1].EndsWith(".txt"))
{
args[1] += ".txt";
}
else
{
if (!args[1].EndsWith(".mopconfig"))
args[1] += ".mopconfig";
}
if (!File.Exists($"{MOP.ModConfigPath}/{args[1]}"))
{
ModConsole.Log($"File {args[1]} doesn't exist.");
return;
}
ModConsole.Log(File.ReadAllText($"{MOP.ModConfigPath}/{args[1]}"));
break;
case "generate-list":
if (args.Length > 1)
{
if (RulesManager.Instance.LoadRules &&
(RulesManager.Instance.IgnoreRules.Count > 0 || RulesManager.Instance.IgnoreRulesAtPlaces.Count > 0 ||
RulesManager.Instance.NewSectors.Count > 0 || RulesManager.Instance.ToggleRules.Count > 0)
)
{
ModConsole.Log("<color=red>WARNING:</color> For accurate results, use \"mop load-rules false\" to prevent MOP from using rule files.");
}
MopSettings.GenerateToggledItemsListDebug = args[1].ToLower() == "true";
}
ModConsole.Log($"Generating toggled elements list is set to " +
$"<color={(MopSettings.GenerateToggledItemsListDebug ? "green" : "red")}>{MopSettings.GenerateToggledItemsListDebug}</color>");
break;
case "load-rules":
if (args.Length > 1)
{
RulesManager.Instance.LoadRules = args[1].ToLower() == "true";
if (!RulesManager.Instance.LoadRules)
{
ModConsole.Log("\n\n<color=red>WARNING:</color>\nDisabling rule files may cause serious issues with game, or even break your game save.\n\n" +
"<b><color=red>!!! USE ONLY AT YOUR OWN RISK !!!</color></b>\n\n");
}
}
ModConsole.Log($"Loading rule files is set to " +
$"<color={(RulesManager.Instance.LoadRules ? "green" : "red")}>{RulesManager.Instance.LoadRules}</color>");
break;
case "force-crash":
bool isCritical = false;
if (args.Length > 1 && args[1].ToLower() == "critical")
{
isCritical = true;
}
ExceptionManager.New(new System.Exception("Test exception"), isCritical, "Test exception: " + System.Guid.NewGuid());
break;
case "resolution":
try
{
int width = int.Parse(args[1]);
int height = int.Parse(args[2]);
Screen.SetResolution(width, height, false);
}
catch
{
ModConsole.LogError("Failed setting resolution.");
}
break;
case "quality-settings":
try
{
QualitySettings.SetQualityLevel(int.Parse(args[1]), true);
}
catch
{
ModConsole.LogError("Failed setting quality settings.");
}
break;
}
}
19
View Source File : LightModel.cs
License : MIT License
Project Creator : Avanade
License : MIT License
Project Creator : Avanade
public LightViewModel<U> MapTo<U>() where U : LightViewModel<U>, ILightViewModel, new()
{
U viewModel = new U();
///By reflection, browse viewModel by identifying all attributes and lists for validation.
foreach (FieldInfo fieldInfo in this.GetType().GetFields())
{
dynamic value = fieldInfo.GetValue(this);
if (value != null)
{
FieldInfo field = this.GetFieldByNameAndType(viewModel, fieldInfo.Name, fieldInfo.FieldType.Name);
if (field != null)
field.SetValue(viewModel, value);
}
}
foreach (PropertyInfo fieldInfo in this.GetType().GetProperties())
{
dynamic value = fieldInfo.GetValue(this);
if (value != null)
{
PropertyInfo field = this.GetPropertyByNameAndType(viewModel, fieldInfo.Name, fieldInfo.PropertyType.Name);
if (field != null)
field.SetValue(viewModel, value);
}
}
return viewModel;
}
See More Examples