En C#, puedo implementar una interfaz genérica dos veces en una sola clase, utilizando dos diferentes tipo de parámetros:La implementación de la misma interfaz en diferentes instancias genéricas
interface IFoo<T> { void Foo(T x); }
class Bar : IFoo<int>, IFoo<float>
{
public void Foo(int x) { }
public void Foo(float y) { }
}
me gustaría hacer lo mismo en C#:
type IFoo<'a> = abstract member Foo : 'a -> unit
type Bar() =
interface IFoo<int> with
[<OverloadID("int")>]
member this.Foo x =()
interface IFoo<float> with
[<OverloadID("float")>]
member this.Foo x =()
Pero da un error del compilador:
This type implements or inherits the same interface at different generic instantiations
'IFoo<float>'
and'IFoo<int>'
. This is not permitted in this version of F#.
no puedo encontrar ninguna discussion of this issue en la web. ¿Se desaprueba ese uso por alguna razón? ¿Hay planes para permitir esto en un próximo lanzamiento de F #?
función planificada para F # 4.0 http://fslang.uservoice.com/forums/245727- f-language/suggestions/5663504-allow-to-implement-the-same-interface-at-different – foobarcode
La solicitud de extracción se puede encontrar en: https://github.com/Microsoft/visualfsharp/pull/18 – forki23