Co to jest moduł in.NET?

Czym właściwie jest moduł? Jaka jest różnica między modułem, klasą A funkcją? Jak Mogę uzyskać dostęp do modułu w c#.net?

UPDATE: Pytam, bo- bez podpisywania kodu chcę obliczyć sumę kontrolną kodu IL tylko niektórych określonych funkcji (w czasie wykonywania).

Author: Pieter Germishuys, 2009-03-14

4 answers

Moduł jest logicznym zbiorem kodu wewnątrz zestawu. Możesz mieć wiele modułów wewnątrz zestawu, a każdy moduł może być napisany w różnych językach. NET (VS, o ile mi wiadomo, nie obsługuje tworzenia zestawów wielomodułowych).

Zespoły zawierają moduły. Moduły zawierają klasy. Klasy zawierają funkcje.

Tak możesz uzyskać dostęp do zestawów, modułów,klas, funkcji, właściwości, pól itp.

 48
Author: OJ.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-23 04:09:57

Jako dodatek do innych odpowiedzi:

MSDN stwierdza, że: "moduł jest plikiem Microsoft intermediate language (MSIL), który nie ma manifestu złożenia.".

Moduły mogą być "połączone" ze sobą poprzez wygenerowanie manifestu zestawu za pomocą łącznika montażowego (al.exe) narzędzie. Jeśli dobrze pamiętam, CLR może załadować poszczególne moduły do montażu, tak aby załadować tylko niezbędne moduły.

EDIT: znalazłem lepszy opis z Netmodules i dlaczego chcesz je.

Jest jeszcze jedno pytanie , które dotyka tematu sumy kontrolnej. Odpowiedzi wspomina o użyciu metody GetILAsByteArray do uzyskania IL.

 10
Author: PHeiberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:20

Plik

Tym właśnie jest moduł.
module: A single file containing content that can be executed by the VES

(Gdzie VES jest programem, który odczytuje. NET assembly i konwertuje go na kod maszynowy.) patrz http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf partycja i Strona 16.

--

Zbiór jest spójnym zbiorem plików w systemie plików (modułach). Zobacz http://msdn.microsoft.com/en-us/library/zst29sk2 (vs.71). aspx

Oczywiście definicje klas są zdefiniowane wewnątrz plik (moduł) itelf.

 5
Author: Alexander Bird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-15 14:06:40

Istnieje również instrukcja VB "module", która nie jest związana z assemblies i kompilacją i jest podobna do klasy statycznej C#:

Https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/module-statement

Instrukcja modułu definiuje typ odniesienia dostępny w całej jego przestrzeni nazw. Moduł (czasami nazywany standardowym modułem) jest podobny do klasy, ale z pewnymi ważnymi rozróżnieniami. Każdy moduł ma dokładnie jeden instancji i nie musi być tworzony ani przypisywany do zmiennej. Moduły nie obsługują dziedziczenia ani implementacji interfejsów. Zauważ, że moduł nie jest typem w tym sensie, że jest klasą lub strukturą - nie możesz zadeklarować, że element programowania ma typ danych modułu.

Możesz używać modułu tylko na poziomie przestrzeni nazw. Oznacza to deklarację kontekst modułu musi być plikiem źródłowym lub przestrzenią nazw i nie może być klasy, struktury, modułu, interfejsu, procedury lub blok. Nie możesz zagnieżdżenie modułu w innym module lub w dowolnym typie. Więcej informacje, zobacz konteksty deklaracji i domyślne poziomy dostępu.

Moduł ma taki sam czas życia jak Twój program. Ponieważ jego członkowie wszystkie są wspólne, mają również życia równe życiu programu.

Modules default to Friend access. Możesz dostosować ich poziomy dostępu z modyfikatorami dostępu. Aby uzyskać więcej informacji, zobacz poziomy dostępu w Visual Basic.

Wszystkie elementy modułu są domyślnie współdzielone.

W krótkich modułach w VB są analogami dla klas statycznych C#

 1
Author: SENya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 15:26:07