簡體   English   中英

返回未知通用類型實例的C#函數

[英]C# function that return instance with unknown generic type

我現在正在實現一個函數Register() ,它在內部調用其他函數ApiReturnFactory()

    public ???? Register(string username)
    {
        var result = new AccountProcess().CreateAccount(username);
        return ApiReturnFactory.CreateInstance(result);
    }

new AccountProcess().CreateAccount(username)我返回了obj<WhateverType>類的obj<WhateverType>

ApiReturnFactory.CreateInstance(obj)返回一個類似obj2<SameTypeWithWhateverType>的對象。

我的問題是編譯器已經知道我將在ApiReturnFactory.CreateInstance(obj)返回什么類型(IntelliSense會做),但是在返回類型中我應該聲明什么???? Register(string username)

我不想具體的泛型類型的obj喜歡obj<string> ,這是不是合理的,因為泛型類型可能並不總是一個字符串。 我想要的是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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM