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