一个抽象类,在本例中是System.Reflection.MethodBase,需要实现整个接口,这很好。但它有这个抽象的成员:
internal abstract ParameterInfo[] GetParametersInternal ();
并且F#编译器抱怨:
没有为'MethodBase.GetParametersInternal()提供实现: 的ParameterInfo []'
如何实现我无法访问的内部成员?或者只是忽略它并实现公共成员。
如果我尝试强制覆盖:
override this.GetParametersInternal() = parameters |> List.toArray
我明白了:
未找到与此对应的抽象或接口成员 覆盖。
答案 0 :(得分:4)
您可能正在尝试使用Type Providers构建F#3。 这是Mono 3.0.6中的一个错误: https://bugzilla.xamarin.com/show_bug.cgi?id=10884
两天前修复了它,所以只需等待3.0.7,除非你想自己编译Mono。
答案 1 :(得分:3)
您无法覆盖此内容 - 内部成员仅对同一程序集中的类型可见。 MethodBase
在mscorlib中定义,因此GetParametersInternal
仅对该程序集中的其他类型可见,而您的代码不是。
答案 2 :(得分:1)
就像李说的那样,你不应该从另一个集合中覆盖内部成员。在进行基本继承时,我没有看到任何编译器错误 - 下面编译很好:
type MyMethodBase() =
inherit System.Reflection.MethodBase()
override this.Attributes with get () = failwith ""
override this.GetMethodImplementationFlags() = failwith ""
override this.GetParameters() = failwith ""
override this.Invoke(obj, invokeAttr, binder, parameters, culture) = failwith ""
override this.MethodHandle with get() = failwith ""
override this.DeclaringType with get() = failwith ""
override this.GetCustomAttributes(attributeType, inh) = failwith ""
override this.GetCustomAttributes(b) = failwith ""
override this.IsDefined(attributeType, inh) = failwith ""
override this.MemberType with get() = failwith ""
override this.Name with get() = failwith ""
override this.ReflectedType with get() = failwith ""