可以将C#扩展方法添加到F#类型中吗?
发布时间:2020-12-15 19:50:38 所属栏目:百科 来源:网络整理
导读:我有一个人的F#库,里面有一个类型: module HisModuletype hisType { a : float; b : float; c : float;} 我在C#中使用它,我想为它添加一个“ToString()”方法,以便于调试. 但以下似乎不起作用: public static class MyExtensions{ public static string To
我有一个人的F#库,里面有一个类型:
module HisModule type hisType { a : float; b : float; c : float; } 我在C#中使用它,我想为它添加一个“ToString()”方法,以便于调试. 但以下似乎不起作用: public static class MyExtensions { public static string ToString(this HisModule.hisType h) { return String.Format("a={0},b={1},c={2}",h.a,h.b,h.c); } } .... var h = new hisType(); Console.WriteLine(h.ToString()); // prints "HisModule+hisType" 任何想法为什么不呢? 解决方法
你的问题的答案是“是”.但是,您的示例不成功,因为方法解析在找到object.ToString()时成功,因此编译器永远不会查找扩展方法.尝试使用其他名称:
public static class MyExtensions { public static string Foo(this HisModule.hisType h) { return String.Format("a={0},h.c); } } .... var h = new hisType(); Console.WriteLine(h.Foo()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |