[英]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.