我是一個較新的編程和我有一個關於通用的問題。這是我的小程序的結構:C#通用:如何正確包裝方法
public enum FieldsA
{
A,
B,
C
}
public enum FieldsB
{
A,
B,
C
}
public abstract class Page
{
}
public abstract class BasePage<T> : Page where T : struct, IComparable
{
public void Update()
{
// code
}
}
public class ClassA : BasePage<FieldsA>
{
}
public class ClassB : BasePage<FieldsB>
{
}
public class MainClassA
{
private ClassA _classA;
public MainClassA(ClassA classA)
{
_classA = classA;
}
public void Method()
{
_classA.Update();
}
}
public class MainClassB
{
private ClassB _classB;
public MainClassB(ClassB classB)
{
_classB = classB;
}
public void Method()
{
_classB.Update();
}
}
我想問如何正確地創建一些靜態的方法,在這裏我換Update()
方法。我想是這樣的:
public static class Helper
{
public static void Update<T>(BasePage<T> page)
{
page.Update();
}
}
和Method()
替換內容:
public class MainClassB
{
private ClassB _classB;
public MainClassB(ClassB classB)
{
_classB = classB;
}
public void Method()
{
Helper.Update(_classB);
}
}
(同爲MainClassA
),但它不工作 - >編譯錯誤:類型T必須是一個非可以爲null的值類型,以便將其用作泛型類型或方法BasePage中的參數T. 感謝您的提示和幫助。
請更具體的比「它不工作」。你有沒有編譯錯誤?運行時異常?還有別的嗎? – JamesQMurphy
我更新了它。公共靜態無效更新(BasePage 頁面)中存在編譯錯誤 –
Deyeth