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



              

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



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

Если вы создаете 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 указывает, что модифицируемый тип доступен для другого кода только из той же сборки.

 







Содержание  Назад  Вперед