Принципы объектно-ориентированного программирования

         

Создание сборок



Создание сборок

Если вы создаете DLL с переключателем /t:library, то не сможете добавить ее к другой сборке. Дело в том, что компилятор автоматически генерирует декларацию для этой DLL, которая поэтому сама является сборкой. Чтобы увидеть это в действии, рассмотрим пример. У нас есть DLL (ModulelServer.cs), у которой есть фиктивный тип Module!Server.

11 Module1Server.cs

// компоновка со следующими переключателями командной строки:



// esc /t:library Module1Server.cs

public class ModulelServer

{

}

Клиентский код в дальнейшем ссылается на эту DLL (Module 1-Client.cs):

// Module1ClientApp.cs

// компоновка со следующими переключателями командной строки:

// esc Module1ClientApp.cs /г:Module1Server.dll

using System;

using System.Diagnostics;

using System.Reflection;

class ModulelClientApp {

public static void Main() {

Assembly DLLAssembly = Assembly.6etAssembly(typeof (ModulelServer));

Console.WriteLine("Module1Server.dll Assembly Information");

Console.WriteLine("\t" + DLLAssembly);

Process p = Process.GetCurrentProcessO; string AssemblyName = p.ProcessName + ".exe"; Assembly ThisAssembly = Assembly.LoadFrom(AssemblyName); Console.WriteLine("Module1Client.exe Assembly Information"); Console.WriteLine("\t" + ThisAssembly); } }

А теперь допустим, что вы скомпоновали эти два модуля, используя переключатели:

esc /t:library ModulelServer.cs

esc ModulelClientApp.cs /r:Module1Server.dll

Если запустить программу, мы увидим информацию, доказывающую, что ЕХЕ и DLL существуют в своих собственных отдельных сборках:

Module1Server.dll Assembly Information

ModulelServer, Version=0.0.0.0, Culture=neutral,

PublicKeyToken=null Module1Client.dll Assembly Information

ModulelClient, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

На самом деле, если бы вы изменили модификатор доступа класса ModulelServer с public на internal, клиентский код перестал бы компилироваться, так как по определению модификатор доступа internal указывает, что модифицируемый тип доступен для другого кода только из той же сборки.

 

Содержание раздела