ho pensato in un primo momento che questo sarebbe stato vicino a quello che si voleva:
type Foo<'a> private() =
static member Blah (a:'a) =
printfn "%A" a
Essere come pre linguaggio C# 2.0 di essere istanziabile solo attraverso la riflessione o la classe stessa (che si spera non farebbe esso).
tuttavia questo viene compilato fino a:
[Serializable, CompilationMapping(SourceConstructFlags.ObjectType)]
public class Foo<a>
{
internal Foo() {...}
public static void Blah(a a) {...}
}
il che implica che le altre classi all'interno del # assemblaggio f creare un'istanza di esso.
Tuttavia il sempre informato Brian ha indicato che il compilatore f # rispetta questa impostazione privata nonostante il tipo di CLR sottostante, il che significa che l'unico modo per creare un'istanza sarebbe tramite riflessione o utilizzando qualcosa come l'attributo InternalsVisibleTo.
Questo può ancora essere accettabile per le vostre esigenze ...
love the // 'trucco lo farà da ora in poi – ShuggyCoUk
Ciao. Per favore perdona la mia ignoranza, ma qual è il trucco "//"? Sto fissando il codice e si comporta allo stesso modo, con o senza di esso. Grazie. – user2916547