internal static ToRoute MapEnum(this string name, params string[] values)
{
return name.MapTo<ProjectItemDefinitionElement>(pide => {
foreach(var m in pide.Metadata) {
var metadata = m;
if(metadata.Name == name) {
return new Accessor(() => metadata.Value, (v) => {
string val = v.ToString();
if (val != null) {
// allow them to set it to a propert value...
if (val.IndexOf("$(") > -1 || values.Contains(val)) {
metadata.Value = val;
}
}
});
}
}
var n = pide.AddMetadata(name, "");
return new Accessor(() => n.Value, (v) => {
string val = v.ToString();
if (val.IndexOf("$(") > -1 || values.Contains(val)) {
n.Value = val;
}
});
});
}