2013-01-16 12 views
17

Czy to jest możliwe, aby wewnętrzne klasy z mojego zespołu były widoczne dla innych zespołów?Uczyń klasy wewnętrzne widocznymi dla innych zespołów

wiem o pliku AssemblyInfo i

[assembly: InternalsVisibleTo()] 

atrybut.

Ale to nie działa w moim przypadku. Głównym celem tego jest umożliwienie wywoływania metod z LINQPAD. Tak więc ten [assembly: InternalsVisibleTo("LINQPad")] nie działa. Nie wiem dlaczego. W moim projekcie korzystam z resolwera zależności i trudno jest to zrobić w linqpad. Jakieś sugestie?

+4

Podejrzewam, że LINQPad generuje zespoły dynamicznie - prawdopodobnie nie jest to samo urządzenie LINQPad, które potrzebuje dostępu do twoich typów. –

+0

@Jon Autokomplet Skeet też nie działa. Zgaduję, że to montaż LINQPAD. – Neir0

+2

Autouzupełnianie prawie na pewno opiera się na refleksji - w pełni oczekiwałbym, że będzie filtrował tylko do właściwości publicznych. W końcu sam zestaw LINQPad nie zawiera * bezpośrednich * wywołań do twojego kodu, prawda? –

Odpowiedz

44

Właśnie przesłałem a new beta, który pozwala na to.

Dodaj następujący atrybut do bibliotek, których wewnętrzne chcesz LINQPad dostępu:

[assembly: InternalsVisibleTo("LINQPadQuery")] 

Będziesz też trzeba włączyć tę funkcję w preferencjach LINQPad'S (Edit | Preferences Advanced).

Daj mi znać, jak się dogadać.

+0

Działa dla mnie. Były czasy, kiedy musiałem powrócić do refleksji, aby uzyskać dostęp do wewnętrznych metod, więc to będzie przydatna funkcja, więc dziękuję. – sgmoore

+0

Ostrzeżenie dotyczące poziomu dostępu również zniknęło, ale teraz rozumiem: "Niespójna dostępność: klasa bazowa" Database.Model.CustomDataContext "jest mniej dostępna niż klasa" UserQuery ". Czy wiesz, jak mogę to obejść? Podpis CustomDataContext to "wewnętrzna klasa częściowa CustomDataContext: DbContext" – SeriousM

+1

Wypróbuj najnowszą kompilację - Właśnie dodałem obejście –

Powiązane problemy