如何在返回多个类型的方法中注入返回类型?

时间:2015-03-13 21:45:33

标签: c# generics

 public T SomeMethod<T>(){

   if(somecondition==something) return 999;
   if(somecondition==somethingelse) return "String";

 }

问题是这些返回语句都会收到设计时错误,表明它们不是T类型。

来电代码看起来像这样。

int ID = SomeMethod<int>();
string StringVaule = SomeMethod<string>();

2 个答案:

答案 0 :(得分:0)

问题的答案是:

return (T)(object) 999;

return (T)(object) "String";

我称之为“双重演员”......

答案 1 :(得分:-4)

答案是:

if(somecondition==something) return (T)(Object) 999;

必须使用双重演员才能奏效。

以及在当前解决方案中使用它的方式。 DefaultMethod采用这种技术的地方。

     var model = new StartEngine()
        {
            ClassID = TestBoundaryType.AllStringBoundaries.ToSpecficStringValue("59843182"),
            Metadata = new Metadata()
            {
                ApplicationId = -1,
                Data = TestBoundaryType.AllDictionaryBoundaries.ToDictionary<string,string>(),
                LocationId = TestBoundaryType.AllIntBoundaries.DefaultValue<int>(BoundaryType.Unknown),
                OrganizationId = TestBoundaryType.AllIntBoundaries.DefaultValue<string>(BoundaryType.Unknown),
                ProductId = TestBoundaryType.AllIntBoundaries.DefaultValue<HL7>(BoundaryType.Unknown)
            }
            ...