Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储/铸造参数<;T>;as参数<;对象>;包括参数<;int>;?_C#_Object_Generics - Fatal编程技术网

C# 存储/铸造参数<;T>;as参数<;对象>;包括参数<;int>;?

C# 存储/铸造参数<;T>;as参数<;对象>;包括参数<;int>;?,c#,object,generics,C#,Object,Generics,我需要将Build()返回的参数存储为参数(因为我将参数存储在一个数组中,另一种方法就是为每一个参数量粘贴太多的副本,因为c没有可变泛型) 问题在于cast(参数)(对象)(/*类型参数的值*/),因为int不能强制转换到对象。我如何解决这个问题 我有下面的怪物(想象一下T1isint): 无法将参数存储在参数中。这就是说,如果您创建一个接口ipParameter,并创建它(ipParameter),您确实可以将ipParameter存储在ipParameter中,如果没有其他帮助的话-创建参数

我需要将
Build()
返回的
参数
存储为
参数
(因为我将参数存储在一个数组中,另一种方法就是为每一个参数量粘贴太多的副本,因为c没有可变泛型)

问题在于cast
(参数)(对象)(/*类型参数的值*/)
,因为
int
不能强制转换到
对象
。我如何解决这个问题

我有下面的怪物(想象一下
T1
is
int
):


无法将
参数
存储在
参数
中。这就是说,如果您创建一个接口
ipParameter
,并创建它(
ipParameter
),您确实可以将
ipParameter
存储在
ipParameter

中,如果没有其他帮助的话-创建
参数
类,移动(并调整)所有共享功能,并从中继承
参数
。在这种情况下,您可以移动
可选
标志并调整ParseFunc:

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

然后在
参数
的构造函数中分配该函数,并将您的参数存储为
参数

您能显示参数类代码吗?@Evk您在这里似乎运气不好。如何准确地使用这些
参数
?无法将它们存储为
对象
s?@Evk我需要调用
参数.ParseFunc(字符串):t
。我可以让它返回一个对象,这很好。但是我将解析的结果存储在一个对象[]中,然后将其传递给标有
//忽略这一行的函数,以返回正确的类型。我知道这是一个肮脏的解决方法,但我还没有想出一个不同的方法(除了为每一个参数复制粘贴60loc ParamsBuilder类..而且我不能使用循环和argasdhsdf)如果没有其他帮助,您可以创建父“Parameter”类,在那里添加ParseFuncUntyped函数,然后将参数存储为“Parameter”对象。您可以在“Parameter”构造函数中将该函数指定为ParseFuncUntyped=(s)=>ParseFunc(s);希望你能理解这不是真的,因为
int
是一个结构,协方差不适用于结构。@Evk-huh,有趣的是,我想我需要做更多的低级工作。。。我从未意识到。我会再考虑一下老年退休金计划的问题……你可能有兴趣阅读这个答案和其中的链接,这解释了为什么它是这样工作的:那么。
        _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)
            });
public Func<string, object> ParseFuncUntyped {get; protected set;}