Se create un anonymous type in una assembly, magari come risultato di una query, e poi lo passate come parametro ad una funzione di un'altra assembly, avete la spiacevole sorpresa di avere un eccezione a runtime se cercate di richiamare le proprietà dell'anonymous type (anche se ispezionando l'oggetto in debug vedrete correttamente tutte le sue proprietà).
Questo perchè gli anonymous type sono internal perciò la loro struttura è visibile solo all'assembly dove sono creati.
Per ovviare a questo problema bisogna istruire il runtime aggiungendo nel file AssemblyInfo, dell'assembly dove è definito l'anonymous type, questa riga:
[assembly: InternalsVisibleTo("Assembly2")]
Se aggiungo questa riga nell'assembly Assembly1...