使用C#泛型(特别是class
es的类型参数),是否可以在专用("非泛型")类型中引用指定的类型参数值({{1扩展/继承泛型的?在这种情况下,我在继承(专用)类型中覆盖通用(继承)类型的class
方法;我怀疑这个问题/答案很重要,但如果没有,我不想限制案件。
我可能正在寻找C调用virtual
的内容;我在C#中最能想到的是typedef
别名(using
)。这是一个带有using Type = Some.Longer.Namespaced.Type;
别名的示例,但即使这样仍然非常冗长,并且在更新时更新using
的名称发生了变化(或其他一些重构,其中逻辑的边界/封装发生了变化,而不是逻辑本身):
ConcreteType
看起来像C风格的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)
{ /* ... */ }
/* ... */
}
或CPP风格的宏确实是我想要的,因为typedef
和构造函数/析构函数也需要更新,以及任何类型(ConcreteTypeLogic
)名称是绑定/合同的一部分的其他相关方面。
答案 0 :(得分:0)
在using
别名之外,语言(C#)不支持此命名间接。
在构建C#(.NET)项目时使用预处理器并不常见,常见的替代方法是使用开发工具来加速这项“工作”。考虑到类型的定义不需要驻留在单个源文件中,甚至不需要驻留在单个程序集中,开发工具似乎是管理它的最佳方法。
感谢评论者的回复。