public void SetStaticProperty(Type type, string propName, object value)
{
value = MarshallToClr(value);
Func<bool> setProp = () =>
{
var prop = type.Property(propName, StaticFlags);
if (prop != null)
{
object res = value;
if (TryConvert(prop.PropertyType, type, ref res))
{
prop.Set(res);
return true;
}
}
return false;
};
Func<bool> setField = () =>
{
var field = type.Field(propName, StaticFlags);
if (field != null)
{
object res = value;
if (TryConvert(field.FieldType, type, ref res))
{
field.Set(res);
return true;
}
}
return false;
};
if (char.IsLower(propName[0]))
{
if (setField() || setProp())
return;
}
else
{
if (setProp() || setField())
return;
}
throw ErrorFactory.CreateClrError(string.Format("Cannot resolve static field or property {0} of type {1}", propName, type));
}