protected virtual void AddResolvedNamedArgumentToEval(MethodInvocationExpression eval, ExpressionPair pair, ReferenceExpression instance)
{
IEntity entity = GetEntity(pair.First);
switch (entity.EntityType)
{
case EntityType.Event:
{
IEvent member = (IEvent)entity;
eval.Arguments.Add(
CodeBuilder.CreateMethodInvocation(
pair.First.LexicalInfo,
instance.CloneNode(),
member.GetAddMethod(),
pair.Second));
break;
}
case EntityType.Field:
{
eval.Arguments.Add(
CodeBuilder.CreateAssignment(
pair.First.LexicalInfo,
CodeBuilder.CreateMemberReference(
instance.CloneNode(),
(IMember)entity),
pair.Second));
break;
}
case EntityType.Property:
{
IProperty property = (IProperty)entity;
IMethod setter = property.GetSetMethod();
if (null == setter)
{
Error(CompilerErrorFactory.PropertyIsReadOnly(pair.First, property));
}
else
{
//EnsureRelatedNodeWasVisited(pair.First, setter);
eval.Arguments.Add(
CodeBuilder.CreateAssignment(
pair.First.LexicalInfo,
CodeBuilder.CreateMemberReference(
instance.CloneNode(),
property),
pair.Second));
}
break;
}
}
}