[英]How can I decrease verbosity when inheriting from C# generic types to non-generic types?
使用 C# 泛型(特別是class
es 的類型參數),是否可以在擴展/繼承泛型的專用(“非泛型”)類型( class
)中引用指定的類型參數值? 在這種情況下,我在繼承(專用)方法中覆蓋了泛型(繼承)類型的virtual
方法; 我懷疑這對問題/答案很重要,但如果不是,則不想限制這種情況。
我可能只是在尋找 C 所稱的typedef
; 我在 C# 中能想到的最接近的事情是using
別名( using Type = Some.Longer.Namespaced.Type;
)。 這是一個帶有using
別名的示例,但即使這樣仍然非常冗長,並且在例如ConcreteType
的名稱更改(或其他一些重構,其中邏輯的邊界/封裝發生變化,而不是邏輯本身發生變化)時更新也沒有樂趣:
using ConcreteType = Some.Longer.Namespaced.Type;
public class ConcreteTypeLogic : CrudLogic<ConcreteType>
{
// default ctor for `ConcreteTypeLogic`
public ConcreteTypeLogic()
{ /* ... */ }
// other ctor for `ConcreteTypeLogic`
/* ... */
// dtor for `ConcreteTypeLogic`
public ~ConcreteTypeLogic()
{ /* ... */ }
// "Create" implementation for `ConcreteType`
public override ConcreteType Create(ConcreteType value)
{ /* ... */ }
// "Read" implementation for `ConcreteType`
public override ConcreteType Read(ConcreteTypeIdentifier valueId)
{ /* ... */ }
/* ... */
}
似乎 C 風格的typedef
或 CPP 風格的宏確實是我想要的,因為ConcreteTypeLogic
和構造函數/析構函數也需要更新,以及類型( class
)名稱的任何其他相關方面綁定/合同的一部分。
除了using
別名之外,語言 (C#) 不支持這種命名間接。
在構建 C# (.NET) 項目時使用預處理器並不常見,常見的替代方法是使用開發工具來加快這項“工作”。 考慮到類型的定義不需要駐留在單個源文件中,甚至不需要駐留在單個程序集中,開發工具似乎是管理它的最佳方法。
感謝評論者的回應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.