gpt4 book ai didi

c# - 如何编写返回动态对象的扩展方法?

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:44 25 4
gpt4 key购买 nike

我在想 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;
}
}
}

有什么方法可以做到这一点?

dynamic 之前编写的许多其他 API 使用这种方式可能更简洁。

最佳答案

您的代码中只有一个小错误,将 dynamic DynamicGroups 更改为 dynamic

public static dynamic Groups(this Match match)
{
return new DynamicGroups(match.Groups);
}

关于c# - 如何编写返回动态对象的扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1955884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com