C# 如何为C中的接口编写FsCheck生成器

C# 如何为C中的接口编写FsCheck生成器,c#,fscheck,C#,Fscheck,假设我有一个接口IPerson,它有两个读取属性age int和name string 我还有一个班上的人来实现IPerson 如何编写FsCheck生成器来生成IPerson类型的实例?类似于以下内容的操作应该可以正常工作: Gen<IPerson> gen = from age in Arb.Default.Int32().Generator from name in Arb.Default.String().Generator

假设我有一个接口IPerson,它有两个读取属性age int和name string

我还有一个班上的人来实现IPerson


如何编写FsCheck生成器来生成IPerson类型的实例?

类似于以下内容的操作应该可以正常工作:

Gen<IPerson> gen = from age in Arb.Default.Int32().Generator
                   from name in Arb.Default.String().Generator
                   select new Person(age, name) as IPerson;

在FsCheck中定义IPersonI的generator是指generator意思:不太明白为什么会被否决或关闭,因为不清楚。这是一个相当清楚的问题,除非你不知道什么是FsCheck,但在这种情况下,继续前进,这里什么都看不到。它确实有效。但是如何在Arb.Default.Int32.Generator上使用from子句,因为IGen没有实现IEnumerable。有什么神奇之处?LINQ语法适用于实现某些方法Select、SelectMany、GroupBy等的任何类型,而不仅仅是IEnumerable。Gen实现了其中的一些功能。