Ho un'interfaccia fluente per un processo di registrazione del contenitore IoC e contiene alcune classi utilizzate per creare le registrazioni.Nascondere GetHashCode/Equals/ToString da classi di interfaccia fluenti intellisense in Visual Studio for C#?
Per esempio, posso fare questo:
builder.Register<IFoo>().From.ConcreteType<Foo>();
Tuttavia, ad ogni passo, dopo un punto, intellisense si apre mostrando i quattro metodi standard della classe Object, GetHashCode, Uguale, GetType e ToString.
Ho provato a sovrascrivere questi metodi in un paio di classi, allegando l'attributo EditorBrowsableAttribute a ciascuno, ma continuano a essere visualizzati. Non c'è modo per me di nasconderli?
Nota che non sto cercando di nasconderli dalla classe stessa, solo da intellisense.
In sostanza, mi piacerebbe questo:
+---------------+
builder.Register<IFoo>().|As |
|By |
|Equals | <-- remove this
|From |
|GetHashCode | <-- and this
|GetType | <-- as well as this
|ToString | <-- and finally this
+---------------+
Ecco quello che ho provato nella classe che viene restituito da Register<T>
:
[EditorBrowsable(EditorBrowsableState.Never)]
public override Boolean Equals(Object obj)
{
return base.Equals(obj);
}
[EditorBrowsable(EditorBrowsableState.Never)]
public override Int32 GetHashCode()
{
return base.GetHashCode();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public override String ToString()
{
return base.ToString();
}
Questo chiaramente non ha funzionato. C'è qualcos'altro che posso provare?
Ho anche provato ad aggiungere un nuovo metodo, non sovrascritto da Object
e applicare lo stesso attributo a quello, e anche questo si presenta, quindi chiaramente l'attributo non sta facendo quello che pensavo avrebbe fatto.
Ho notato la nota nella documentazione per non nascondere le cose dallo stesso assembly, ma ho provato a creare un nuovo progetto e continuano a essere visualizzate.
Interessante, la documentazione di EditorBrowsableState dice chiaramente * Ad esempio, il motore IntelliSense in Visual Studio non mostra mai metodi o proprietà contrassegnati come Mai. * Ho provato in un piccolo progetto di test e ottengo gli stessi risultati. Anche se controllo "Nascondi membri avanzati" e utilizzo 'EditorBrowsableState.Advanced', il membro viene comunque visualizzato nell'elenco. Dispari. –
Ho trovato la risposta, modifico la domanda. –
Buon risultato. Mai non è sempre mai. –