Я думал о том, как Regex.Match.Group хочет быть динамичным:
Regex.Match (...).Groups["Foo"]
хотел бы быть:
Regex.Match (...).Groups.Foo
Я думал о написании метода расширения, который позволил бы:
Regex.Match (...).Groups().Foo
И попытался написать так, но это не разрешено (';' требуется для 'static dynamic')
public static dynamic DynamicGroups Groups(this Match match)
{
return new DynamicGroups(match.Groups);
}
public class DynamicGroups : DynamicObject
{
private readonly GroupCollection _groups;
public DynamicGroups(GroupCollection groups)
{
this._groups = groups;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
Group g = this._groups[binder.Name];
if (g == null)
{
result = null;
return false;
}
else
{
result = g;
return true;
}
}
}
Есть ли способ сделать это?
Существует множество других API, которые были написаны до dynamic
, которые могли бы быть более понятными при использовании этого способа.