2013-01-16 7 views
17

È realistico rendere le classi interne dal mio assieme visibili ad altri assiemi?Rende le classi interne visibili ad altri gruppi

che so di lima AssemblyInfo e

[assembly: InternalsVisibleTo()] 

attributo.

Ma nel mio caso non funziona. Lo scopo principale è quello di rendere possibili metodi di chiamata da LINQPAD. Quindi questo [assembly: InternalsVisibleTo("LINQPad")] non funziona. Non so perché. Nel mio progetto uso il resolver di risoluzione ed è difficile farlo in linqpad. Qualche suggerimento?

+4

Sospetto fortemente che LINQPad stia generando gli assembly in modo dinamico: probabilmente non è lo stesso assembly LINQPad a dover accedere ai tipi. –

+0

@Jon Anche il completamento automatico dello Skeet non funziona. Immagino che sia l'assembly LINQPAD. – Neir0

+2

Il completamento automatico è quasi certamente basato sulla riflessione: mi aspetterei che fosse filtrato solo per le proprietà pubbliche. Dopotutto, l'assembly LINQPad non contiene chiamate * dirette * al tuo codice, vero? –

risposta

44

Ho appena caricato a new beta che consente di funzionare.

aggiungere il seguente attributo alle librerie i cui interni si desidera LINQPad per l'accesso:

[assembly: InternalsVisibleTo("LINQPadQuery")] 

È inoltre necessario attivare questa funzionalità nelle preferenze di LINQPad (Modifica | Preferenze | Avanzate).

Fammi sapere come va.

+0

Funziona per me. Ci sono state volte in cui ho dovuto tornare alla riflessione per accedere ai metodi interni, quindi questa sarà una caratteristica utile, quindi Grazie. – sgmoore

+0

Anche l'avviso sul livello di accesso è andato per me, ma ora ho capito: 'Accessibilità incoerente: la classe base 'Database.Model.CustomDataContext' è meno accessibile della classe 'UserQuery''. Sai come posso aggirare questo? La firma di CustomDataContext è 'internal partial class CustomDataContext: DbContext' – SeriousM

+1

Prova ultima build: ho appena aggiunto una soluzione alternativa –