簡體   English   中英

具有用戶定義類型的通用方法

[英]Generic Methods with user defined types

我面臨的場景是我有一個基礎 class

public class BaseClass
{
    public string SomeVal { get; set; }
    public BaseClass(string someVal)
    {
        this.SomeVal = someVal;
    }
}

以及使用 BaseClass 的構造函數從 BaseClass 繼承的另外兩個類

public class ClassA : BaseClass
{
    public ClassA(string someVal) : base (someVal)
        {
        }
}

public class ClassB : BaseClass
{
    public ClassB(string someVal) : base (someVal)
        {
        }
}

我想創建一個可以采用ClassA類型或ClassB類型來修改SomeVal值的通用方法。 我試過這樣做

public static void func<T>(T className)
{
    className.SomeVal = "Hello World";
}

但顯然編譯器不知道 SomeVal 是什么,我也嘗試過public class ClassA<T>: BaseClass但仍然在同一點不知道SomeVal是什么,此外,代碼中ClassA的所有使用都不再起作用錯誤Using the generic type 'ClassA<T>' requires 1 type arguments

我還考慮了我需要的功能的重載,但這對於我的場景來說可能會變得乏味,因為我有多個繼承自BaseClass的類,而且我要創建的方法也不是一個大的

您可以將T限制為BaseClass

public static void func<T>(T className)
   where T : BaseClass

如果您對T做的不多,我會考慮使func不是通用的,而只需使用BaseClass

public static void func(BaseClass className)

暫無
暫無

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

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