返回具有未知泛型类型的实例的 C# 函数



我现在正在实现一个函数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);
}

最新更新