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
isint
):
无法将
参数
存储在参数
中。这就是说,如果您创建一个接口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;}