gpt4 book ai didi

c# - 将 Parameter 存储/转换为 Parameter 包括 Parameter
转载 作者:行者123 更新时间:2023-11-30 15:56:19 26 4
gpt4 key购买 nike

我需要存储 Parameter<T1>Build() 返回作为 Parameter<object> (因为我将参数存储在一个数组中,另一种方法就是为每个参数数量复制粘贴相同的类太多,因为 c# 没有可变参数泛型)。

问题是 Actor (Parameter<object>) (object) (/* value of type Parameter<int> */); , 自 int不可转换为 object .我该如何解决这个问题?

我有以下怪物(想象 T1int ):

    public static IEventBuilder<(IOrigin origin, T1 arg1, T2 arg2)>
Params<T1, T2>(
this IEventBuilder<(IOrigin origin, string msg)> eventBuilder,
Func<IParameterBuilder<string>, IParameterBuilder<T1>> param1,
Func<IParameterBuilder<string>, IParameterBuilder<T2>> param2)
{
return new ParamsBuilder<(IOrigin, T1, T2)>(
eventBuilder,
(origin, objs) => (origin, (T1) objs[0], (T2) objs[1]), // ignore this line
(Parameter<object>) (object) param1(new RootParameterBuilder()).Build(), // Build() returns Parameter<T1> (e.g. int)
(Parameter<object>) (object) param2(new RootParameterBuilder()).Build());
}

不是很重要,但如果您需要一些上下文,这里有一些 Params 的用法示例:

        _dispatcher.On // IEventBuilder<IEvent>
.Chat() // IEventBuilder<(IOrigin, string)>
.Params( // IEventBuilder<(IOrigin, double)>
p => p // IParameterBuilder<string>
.Transform(Convert.ToInt32) // IParameterBuilder<int>
.Transform(i => i + 128.0)) // IParameterBuilder<double>
.Invoke(t =>
{
// t is (IOrigin, double)
});

最佳答案

如果没有别的帮助 - 创建 Parameter类,移动(和调整)所有共享功能并继承 Parameter<T>从中。在这种情况下,您可以移动 Optional标记并调整 ParseFunc:

public Func<string, object> ParseFuncUntyped {get; protected set;}

然后在 Parameter<T> 的构造函数中分配该函数并将您的参数存储为 Parameter

关于c# - 将 Parameter<T> 存储/转换为 Parameter<object> 包括 Parameter<int>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075144/

26 4 0