【发布时间】:2011-07-21 21:52:18
【问题描述】:
给定以下CRTP,在 C# 中输入:
public abstract class DataProviderBase<TProvider>
where TProvider : DataProviderBase<TProvider> { }
如何在 F# 中获得其泛型类型定义?
let typeDef = typedefof<DataProviderBase<_>>
产生错误:
为类型推断变量应用默认类型“DataProviderBase”时类型约束不匹配。统一 ''a' 和 'DataProviderBase' 时生成的类型将是无限的 考虑添加更多类型约束
在 C# 中,它是:
var typeDef = typeof(DataProviderBase<>);
更新
我找到了解决方法:
[<AbstractClass>]
type DummyProvider() =
inherit DataProviderBase<DummyProvider>()
let typeDef = typeof<DummyProvider>.BaseType.GetGenericTypeDefinition()
没有额外的类型,还有其他方法吗?
【问题讨论】:
标签: reflection f# crtp