public override CodeExpression GetCodeExpression (BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
ResourceExpressionFields fields = parsedData as ResourceExpressionFields;
CodeExpression[] expr;
// TODO: check what MS runtime does in this situation
if (entry == null)
return null;
if (!String.IsNullOrEmpty (fields.ClassKey)) {
if (! (entry.PropertyInfo is PropertyInfo))
return null; // TODO: check what MS runtime does here
expr = new CodeExpression [] {
new CodePrimitiveExpression (fields.ClassKey),
new CodePrimitiveExpression (fields.ResourceKey)
};
CodeMethodInvokeExpression getgro = new CodeMethodInvokeExpression (new CodeThisReferenceExpression (), "GetGlobalResourceObject", expr);
return new CodeCastExpression (entry.PropertyInfo.PropertyType, getgro);
} else
return CreateGetLocalResourceObject (entry, fields.ResourceKey);
}