private Property GetAccessorProperty(string template, TypeNode type,
Identifier name, Expression privExpr, Expression idExpr, Expression localInputOrOutput)
{
Property accessor = Templates.GetPropertyTemplate(template);
accessor.Type = type;
if (accessor.Getter != null)
{
accessor.Getter.ReturnType = type;
accessor.Getter.Name = Identifier.For("get_" + name.Name);
}
if (accessor.Setter != null)
{
accessor.Setter.Parameters[0].Type = type;
accessor.Setter.Name = Identifier.For("set_" + name.Name);
}
accessor.Name = new Identifier(name.Name);
Replacer.Replace(accessor.Getter, "_fieldName", privExpr);
Replacer.Replace(accessor.Getter, "_fieldId", idExpr);
Replacer.Replace(accessor.Getter, "_localInputOrOutput", localInputOrOutput);
Replacer.Replace(accessor.Setter, "_fieldName", privExpr);
Replacer.Replace(accessor.Setter, "_fieldId", idExpr);
Replacer.Replace(accessor.Setter, "_localInputOrOutput", localInputOrOutput);
return accessor;
}