Fields on internal types can be reflected

This commit is contained in:
Westin Miller
2017-11-25 23:02:01 -08:00
parent 7ea982c903
commit 039c5d9244

View File

@@ -322,7 +322,12 @@ namespace Torch.Utils
Expression impl;
if (attr is ReflectedSetterAttribute)
{
impl = Expression.Block(Expression.Assign(fieldExp, paramExp[isStatic ? 0 : 1]), Expression.Default(typeof(void)));
var valParam = paramExp[isStatic ? 0 : 1];
var valExpr = (Expression)valParam;
var setType = sourceField?.FieldType ?? sourceProperty.PropertyType;
if (valParam.Type != setType)
valExpr = Expression.Convert(valExpr, setType);
impl = Expression.Block(Expression.Assign(fieldExp, valExpr), Expression.Default(typeof(void)));
}
else
{