当前位置: 首页 > 知识库问答 >
问题:

使用委托将两个函数合并在一起

蓟捷
2023-03-14

我有以下两个功能

public static Dictionary<int, string> GetEnumLocalizations<T>()
    where T : struct
{
    return Enum.GetValues(typeof(T))
        .Cast<object>()
        .ToDictionary(enumValue => (int)enumValue, enumObject => ((Enum)enumObject).ToLocalizedValue());
}

public static Dictionary<int, string> GetEnumDescriptions<T>()
    where T : struct
{
    return Enum.GetValues(typeof(T))
        .Cast<object>()
        .ToDictionary(enumValue => (int)enumValue, enumObject => ((Enum)enumObject).GetDescription());
}

public static string GetDescription(this Enum value)
{
    return ...
}

public static string ToLocalizedValue(this Enum value)
{
    return ...
}

如果我没有搞错,应该可以将GetEnumLocalizations()GetEnumDescriptions()合并到一个函数中,并使用委托参数解析((Enum)enumObject).ToLocalizedValue())((Enum)enumObject).GetDescription())部分。

那有可能吗?我在试着这么做的时候被卡住了。在伪代码中,我想的是这样的东西:

public static Dictionary<int, string> GetEnumValues<T>(delegate someFunction)
    where T : struct
{
    return Enum.GetValues(typeof(T))
        .Cast<object>()
        .ToDictionary(enumValue => (int)enumValue, someFunction);
}

共有1个答案

酆晔
2023-03-14

当然,用这个就行了:

public static Dictionary<int, string> GetEnumValues<T>(Func<Enum, string> someFunction)
    where T : struct
{
    return Enum.GetValues(typeof(T))
        .Cast<object>()
        .ToDictionary(enumValue => (int)enumValue, enumObject => someFunction((Enum)enumObject);
}

现在你应该可以这样称呼它了:

GetEnumValues<MyEnum>(x => x.ToLocalizedValue());
 类似资料:
  • 我有一个问题把两个数组组合在一起。一个数组是问题,另一个数组是答案。 不起作用,因为我丢失了一些键+值。而且也不是我想要的,我希望有人能帮我。 这两个数组都得到了键,这是我要针对的键。 数组1(答案); 和包含问题的数组: 最后的数组必须是什么样子的:

  • 问题内容: 如何将这两个JToken合并为一个JToken。听起来应该很简单,但无法解决。 谢谢您的帮助! 到目前为止,这是我尝试过的: 我首先将第一个对象分配给变量,然后尝试将其连接到第二个变量。我有一个循环,可以带回具有三个字段的多个页面。最终目标是抓取每个页面并创建一个包含所有页面的大J。 像这样的东西: 问题答案: 您可以用来将一个合并到另一个。请注意,可以控制数组的合并方式。从Enume

  • 问题内容: 有人可以解释何时以及何时不使用Swift中的委托指针进行“弱”分配,为什么? 我的理解是,如果您使用的协议未定义为类,则无法,也不想将您的委托指针分配给弱。 但是,当您的协议定义为类类型协议时,您是否要将委托设置为弱指针? 我对么?在Apple的快速指南中,类协议示例没有使用弱分配,但是在我的测试中,如果没有弱引用我的委托人,我会看到强参考周期。 问题答案: 通常,使类协议(如用关键字

  • 本文向大家介绍JavaScript匿名函数与委托使用示例,包括了JavaScript匿名函数与委托使用示例的使用技巧和注意事项,需要的朋友参考一下

  • 问题内容: 我见过类似的问题,但没有一个提供我所要的答案,因此,如果这被认为是重复的,我在此致歉。我正在尝试将数组{1,2,3}和{4,5,6}合并为{1,2,3,4,5,6}。我做错了什么?我是java的新手。抱歉,问题很愚蠢。 问题答案: 代替 您需要调用merge方法,并将结果分配给数组,例如: 您的for循环也应该是:

  • 在C++98中,如果你想让两个构造函数完成相似的事情,可以写两个大段代码相同的构造函数,或者是另外定义一个init()函数,让两个构造函数都调用这个init()函数。例如: class X { int a; // 实现一个初始化函数 validate(int x) { if (0<x && x<=max) a=x; else throw bad_X(x);