public T SomeMethod<T>(){
if(somecondition==something) return 999;
if(somecondition==somethingelse) return "String";
}
问题是这些返回语句都会收到设计时错误,表明它们不是T类型。
来电代码看起来像这样。
int ID = SomeMethod<int>();
string StringVaule = SomeMethod<string>();
答案 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)
}
...