internal static ToRoute MetadataRoute(this string metadataName, string defaultValue = null)
{
return metadataName.MapTo<ProjectItemDefinitionElement>(pide => {
foreach (var m in pide.Metadata) {
var metadata = m;
if (metadata.Name == metadataName) {
return new Accessor(() => metadata.Value, (v) => metadata.Value = v.ToString());
}
}
var n = pide.AddMetadata(metadataName, defaultValue ?? "");
return new Accessor(() => n.Value, (v) => n.Value = v.ToString());
});
}