我现在正在实现一个函数Register()
,该函数调用内部ApiReturnFactory()
的其他函数。
public ???? Register(string username)
{
var result = new AccountProcess().CreateAccount(username);
return ApiReturnFactory.CreateInstance(result);
}
new AccountProcess().CreateAccount(username)
返回一个像obj<WhateverType>
这样的对象。
ApiReturnFactory.CreateInstance(obj)
返回一个像obj2<SameTypeWithWhateverType>
这样的对象。
我的问题是编译器已经知道我将在ApiReturnFactory.CreateInstance(obj)
中返回什么类型(IntelliSense 做(,但是我应该在Register(string username)
的返回类型????
中声明什么?
我不想为像obj<string>
这样的obj
指定泛型类型,这是不合理的,因为泛型类型可能并不总是字符串。我想要的是像obj<T>
这样的东西.
提前谢谢。
创建一个接口并从该接口继承泛型类型,并将该接口对象或基类返回适合您的用例:
public interface IObject
{
}
public class GenericClass<SomeType> : IObject
{
}
然后你可以返回接口对象:
public IObject Register(string username)
{
var obj = new AccountProcess().CreateAccount(username);
return ApiReturnFactory.CreateInstance(obj);
}
public obj2<T> Register<T>(string username)
{
var result = new AccountProcess().CreateAccount(username);
return (obj2<T>)ApiReturnFactory.CreateInstance(result);
}