2011-03-12 35 views
2

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

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

现在我不知道是否还可以改变它在任何方式,所以我可以集合T到Parameter.Type?

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

,并使其返回一个布尔值与它的值设置为true?

对于字符串:

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

,并使其返回一个字符串,它的值设置为“somestring”?

所以它应该返回一个布尔没有我声明T为布尔之前?

+0

'Parameter'类是怎么样的? – 2011-03-12 15:11:39

回答

1

不知道你能做到这一点。即使可以,其他(更新手的)开发人员读取/维护代码可能有点令人困惑。

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

+0

我相信这是不可能的,所以我认为你的回答是正确的,我会坚持我现在的方法。 – 2011-03-12 20:32:43

+0

我建议你检查动态。虽然不是类型安全的,但它非常有用。 – Kon 2011-03-13 01:33:50

+0

Kon:动态实际上是做我想做的,但我不能在开关中使用动态,从而使方法在我当前的项目中无用:) – 2011-03-14 08:00:52

1

你在想这个吗?

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

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

+0

不是我在找什么,因为初始化此方法仍然需要您提供类型你想要它。 – 2011-03-12 20:32:06