从 C# 泛型类型继承到非泛型类型时如何减少冗长?

How can I decrease verbosity when inheriting from C# generic types to non-generic types?

使用 C# 泛型(具体来说,classes 的类型参数),是否可以在专门的 ("non-generic") 类型 (class) 中引用指定的类型参数值那个 extends/inherits 通用的?在这种情况下,我将在继承(专用)类型中覆盖通用(继承)类型的 virtual 方法;我怀疑这对 question/answer 很重要,但如果不是,我不想限制这种情况。

我可能只是在寻找 C 所说的 typedef;在 C# 中,我能想到的最接近的东西是 using 别名 (using Type = Some.Longer.Namespaced.Type;)。这是一个带有 using 别名的示例,但即使这样仍然非常冗长,并且在例如更新时没有乐趣。 ConcreteType 的名称更改(或其他一些重构,其中 boundaries/encapsulations 逻辑移位,而不是逻辑本身):

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 和 constructor/destructor 也需要更新,以及类型 (class) 名称是 binding/contract.

的一部分的任何其他相关方面

using 别名之外,语言 (C#) 不支持这种间接命名。

在构建 C# (.NET) 项目时使用预处理器并不常见,常见的替代方法是使用开发工具来加速此过程 "work." 考虑到类型的定义不需要驻留在单个源文件甚至单个程序集中,开发工具似乎是管理它的最佳方法。

感谢评论者的回复。