C# 为类型参数设置默认值
C# set a default for a type parameter
我正在尝试扩展一个 class,我可以选择在其中传递一个类型。然而,很多时候这将是 int
类型,尽管在某些情况下这可能会改变,所以我想让它成为动态的。
但是,我想让它默认为整数类型,并且由于它扩展了另一个需要该类型的 class,我不确定如何处理它。
我有一个 BaseEntity 设置,以便在创建/更新记录时允许填充 CreatedAt 和 UpdatedAt 列,这扩展了可识别 class 从 JSON API包。
class BaseEntity : Identifiable {
...
}
Identifiable
class,如果 id 的类型与指定的原始类型不同,则可选地允许您将类型参数传递给扩展。
class BaseEntity : Identifiable<Guid> {
...
}
我想知道,我如何扩展这个 BaseEntity
class 并有选择地提供一个类型并将其传递给 Identifiable。这是可以实现的还是我每次都需要提供它。
class BaseEntity<T> : Identifiable<T> {
// <T> Should default to int if possible.
}
class AnotherEntity : BaseEntity<Guid> {
// Allow me to pass in GUID to override the default int type
}
class AnotherEntityAgain : BaseEntity {
// Would default to type <int> if nothing specified.
}
在 C# 中没有“可选类型”这样的东西,这是通过有两个 classes 来实现的,一个有类型,一个没有。 C# 允许您同时拥有两者,因为 ClassName
被认为是与 ClassName<T>
不同的类型
您可以通过创建一个无类型 class 来实现同样的效果:
class BaseEntity : Identifiable<int> {
}
您还可以让 class 直接从您的泛型 class 继承,这样您就不需要重复代码:
class BaseEntity : BaseEntity<int> {
}
我正在尝试扩展一个 class,我可以选择在其中传递一个类型。然而,很多时候这将是 int
类型,尽管在某些情况下这可能会改变,所以我想让它成为动态的。
但是,我想让它默认为整数类型,并且由于它扩展了另一个需要该类型的 class,我不确定如何处理它。
我有一个 BaseEntity 设置,以便在创建/更新记录时允许填充 CreatedAt 和 UpdatedAt 列,这扩展了可识别 class 从 JSON API包。
class BaseEntity : Identifiable {
...
}
Identifiable
class,如果 id 的类型与指定的原始类型不同,则可选地允许您将类型参数传递给扩展。
class BaseEntity : Identifiable<Guid> {
...
}
我想知道,我如何扩展这个 BaseEntity
class 并有选择地提供一个类型并将其传递给 Identifiable。这是可以实现的还是我每次都需要提供它。
class BaseEntity<T> : Identifiable<T> {
// <T> Should default to int if possible.
}
class AnotherEntity : BaseEntity<Guid> {
// Allow me to pass in GUID to override the default int type
}
class AnotherEntityAgain : BaseEntity {
// Would default to type <int> if nothing specified.
}
在 C# 中没有“可选类型”这样的东西,这是通过有两个 classes 来实现的,一个有类型,一个没有。 C# 允许您同时拥有两者,因为 ClassName
被认为是与 ClassName<T>
您可以通过创建一个无类型 class 来实现同样的效果:
class BaseEntity : Identifiable<int> {
}
您还可以让 class 直接从您的泛型 class 继承,这样您就不需要重复代码:
class BaseEntity : BaseEntity<int> {
}