簡體   English   中英

C#-如何在屬性或變量中分配泛型類型

[英]C# - How to assign the generic type in a property or variable

我有兩個不同的包,例如WebBundle和MobileBundle,並且我有一個單例泛型類,該類具有任何包的類型(在下面添加了通用單例代碼)。

public class GenericSingleton<T> where T : class, new()
{
    private static readonly object padlock = new object();

    private GenericSingleton() { }

    private static T instance = null;

    public static T Instance { 
        get
        {
            lock (padlock)
            {
                if (instance == null)
                {
                    instance = new T();
                }
                return instance;
            }
        }
    }
}

當我執行以下行時,

var web = GenericSingleton<WebBundle>.Instance;

我在web變量中獲取了webbundle類的實例,而intellisense為我提供了WebBundle中的所有可用方法。

現在,我的要求是將此var web方法變量分配給類級別的屬性或變量,並且對於任何種類的捆綁包而言,它應該是動態的。

請幫助解決此問題

您需要提取這些對象共享的公共接口或抽象類(或普通類,只是一些公共部分)。 它們具有對應的名稱,表明它們相似。 也許它們具有相同或相似的公共方法(也許不是全部,但是有些),公共財產或事件。 您需要重構代碼以將那些常見的東西提取到一個實體中,並讓T在泛型類中實現它:

public class GenericSingleton<T> where T : ICommonInterface

暫無
暫無

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

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