gpt4 book ai didi

f# - 在 F# 中覆盖构造函数

转载 作者:行者123 更新时间:2023-12-04 23:10:09 25 4
gpt4 key购买 nike

我将如何在 F# 中编写以下 C# 代码?

namespace Shared {
public class SharedRegistry : PageRegistry {
public SharedRegistry(bool useCache = true)
: base(useCache) {
// Repositories
ForRequestedType<IAddressRepository>().TheDefaultIsConcreteType<SqlAddressRepository>();
ForRequestedType<ISharedEnquiryRepository>().TheDefaultIsConcreteType<SharedEnquiryRepository>();

// Services
ForRequestedType<IAddressService>().TheDefaultIsConcreteType<AddressService>();
ForRequestedType<ISharedEnquiryService>().TheDefaultIsConcreteType<SharedEnquiryService>();
}
}
}

就我所管理的而言,但我无法从 PageRegistry 继承同时声明我自己的默认构造函数。
type SharedRegistry(useCache: bool) =
inherit PageRegistry(useCache)
new() = new SharedRegistry(true)

富有的

最佳答案

我不确定我是否理解你的问题;你上面写的看起来应该可以正常工作。如果您要问将其余构造函数逻辑放在哪里,请尝试以下操作:

type SharedRegistry(useCache) as this =
inherit PageRegistry(useCache)
do
this.ForRequestedType<IAddressRepository>().TheDefaultIsConcreteType<SqlAddressRepository>()
// etc.
new() = SharedRegistry(true)

如果要单独定义每个构造函数,也可以这样做:
type SharedRegistry =
inherit PageRegistry
new(useCache) as this =
{ inherit PageRegistry(useCache) } then
this.ForRequestedType<IAddressRepository>().TheDefaultIsConcreteType<SqlAddressRepository>()
// etc.
new() = SharedRegistry(true)

或者,您可以对主构造函数使用可选参数:
type SharedRegistry(?useCache) as this =
inherit PageRegistry(defaultArg useCache true)
do
this.ForRequestedType<IAddressRepository>().TheDefaultIsConcreteType<SqlAddressRepository>()
// etc.

关于f# - 在 F# 中覆盖构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2566821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com