簡體   English   中英

沒有特定類型的泛型

[英]Generics without a specific type

我有這個:

class Program
    {
        static void Main(string[] args)
        {

            var result = new Result<int, bool> { success = true, Data = 88 };
            var result2 = new Result<string, bool> { success = true, Data = "Niels" };


            Console.WriteLine(result2.success);
            Console.WriteLine(result2.Data);

            Console.ReadKey();
        }
    }

    public class Result<T, TU>
    {
        public TU success { get; set; }
        public T Data { get; set; }


    }

因此,這是一個具有兩個屬性的簡單泛型類。

我只是想知道如何做到這一點:

var result = new Result<int, bool> { success = true, Data = 88 };

更通用的:)。 因為您仍然必須“說”返回類型是什么: <int, bool>

所以有可能這樣做例如:

<T var1, T var2> ?

謝謝

所以我的意思是這樣的:

var result = new Result<T var1, T var2> { success = true, Data = 88 };

這樣您就可以隨心所欲地填寫成功和數據(字符串,整數,浮點數,布爾值)。

您可以使用工廠方法從給定參數自動解析類型:

public static class ResultFactory
{
    public static Result<T, TU> Create<T, TU>(TU success, T data)
    {
        return new Result<T, TU> { success = success, Data = data };
    }
}

var result = ResultFactory.Create(true, 88);
var result2 = ResultFactory.Create(true, "Niels");

因為您仍然必須“說”返回類型是什么: <int, bool>

是的,您將必須指定T,TU類型T,TU並且不能保持打開狀態。 類型必須在編譯時關閉。 因此不可能像<T var1, T var2>那樣調用它<T var1, T var2>除非將它包裝在另一個泛型類型或方法中

暫無
暫無

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

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