有关T类型的问题

时间:2011-03-12 15:03:59

标签: c# silverlight generics

从我的问题@ Possible to make a method with random type?我得到了这个:

public static T GetParameterValue<T>(Parameter source)
{
    return (T)source.Value;
}

现在我想知道是否也可以以任何方式更改它,以便我可以将T设置为Parameter.Type?

所以GetParameterValue(ABoolParameter) ABoolParameter.Type = bool, ABoolParameter.Value=true

并将其作为bool返回,并将其值设置为true?

和字符串:

GetParameterValue(AStringParameter)其中AStringParameter.Type = string, AStringParameter.Value = "somestring"

并将其作为字符串返回,并将其值设置为“somestring”?

所以它应该返回一个bool,而不是我之前将T声称为bool?

2 个答案:

答案 0 :(得分:1)

不确定你能做到这一点。即使你可以,其他(更新手)开发人员阅读/维护代码可能会有点混乱。

或者,您可以使用dynamic(甚至是普通的object)。

答案 1 :(得分:1)

你在想这个吗?

public static void SetParameterValue<T>(this Parameter param, T value)
{
    param.Value = value;
    param.Type = typeof(T);
}

这取决于参数的Type。如果它不是实际的if / else,你可以创建一堆System.Type语句,但它可能不是最易读的。