Хорошо, у меня будет более простой пример, который, я надеюсь, поможет вам достичь вашей цели.
Предположим, у нас есть проект бизнес-сущностей, который мы хотим использовать в нашем проекте WinForm,Затем у нас есть два проекта, скажем, в рамках одного решения для простоты.
- WinFormApp (MyCompany.MyProject.WinFormApp.exe);
- BusinessEntities (MyCompany.MyProject.BusinessEntities.dll)).
Мы примем это, поскольку эти файлы сборки содержат одинаковое имя сборки и пространство имен по умолчанию.
Пространство имен моегоПроект WinFormApp: MyCompany.MyProject.WinFormApp
И: MyCompany.MyProject.BusinessEntities
для библиотеки классов.Давайте начнем с библиотеки классов, которая содержит два следующих класса:
- Customer;
- Supplier;
- CreditTerms.
Inбухгалтерский учет, эти два используются с разных точек зрения, которые Account Receivable
для Заказчика и Account Payable
для Поставщика.Правильное пространство имен может быть назначено для отражения этой реальности.
Класс Customer должен выглядеть следующим образом:
Imports MyCompany.MyProject.BusinessEntities
Namespace AccountReceivable
Public Class Customer
Private _id As Integer
Private _name As String
Private _phoneNumber As Long
Private _creditTerm As CreditTerm
Public Sub New()
Term = CreditTerm.None
End Sub
Public Sub New(ByVal pId As Integer _
, ByVal pName As String _
, ByVal pPhoneNumber As Long)
_id = pId
Name = pName
PhoneNumber = pPhoneNumber
Term = CreditTerm.None
End Sub
Public ReadOnly Property Id As Integer
Get
Return _id
End Get
End Property
Public Property Name As String
Get
Return _name
End Get
Set(ByVal value As String)
If (String.IsNullOrWhiteSpace(value)) Then _
Throw New ArgumentNullException("Name")
_name = value
End Set
End Property
Public Property PhoneNumber As Long
Get
Return _phoneNumber
End Get
Set(ByVal value As Long)
_phoneNumber = value
End Set
End Property
Public Property Term As CreditTerm
Get
Return _term
End Get
Set(ByVal value As CreditTerm)
_term = value
End Set
End Property
End Class
End Namespace
Затем класс поставщика:
Imports MyCompany.MyProject.BusinessEntities ' Used for the CreditTerm Enum Property'
Namespace AccountPayable
Public Class Supplier
' We will here consider having the same properties as Customer for simplicity.'
End Class
End Namespace
ИПеречень CreditTerms, который здесь может быть назначен как Поставщику, у которого мы покупаем, так и Клиенту, которому мы продаем.С этой точки зрения, этот класс может быть либо в корне вашего проекта, чтобы нарушить его обычное использование.
Public Enum CreditTerm
None
N30
N45
N60
N90
End Enum
Тогда наш проект WinFormApp должен выглядеть примерно так:
Imports System
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports MyCompany.MyProject.BusinessEntities 'Indeed you have to add the reference...'
Imports MyCompany.MyProject.BusinessEntities.AccountReceivable
Public Partial Class Form1
Inherits Form
Private _netTerm As CreditTerm = CreditTerm.None
Private _customer As Customer = New Customer()
Private _supplier As AccountPayable.Supplier = New AccountPayable.Supplier()
...
End Class
Обратите внимание, что я явно импортировал MyCompany.MyProject.BusinessEntities
и MyCompany.MyProject.BusinessEntities.AccountReceivable
, чтобы проиллюстрировать различия в пространстве имен между перечислением CreditTerm
и классом Customer
.Поэтому я не импортировал пространство имен Supplier
class ', которое обязывает меня указывать место, где найти класс.
В конце концов, у меня могло бы быть MyCompany.MyProject.BusinessEntities.Customer
пространство имен для группировки всегоэто относится к клиенту в том же пространстве имен, в то время как класс Customer находится в пространстве имен Customer.Но тогда, даже при импорте пространства имен, вам нужно будет написать следующее:
Private _customer As Customer.Customer = New Customer.Customer()
При записи возникает еще одна вещь.Попробуйте собрать / сгенерировать / восстановить библиотеку классов, а затем добавить ее в качестве ссылки.Возможно, ваш проект, на который ссылается библиотека классов, не может найти двоичные файлы, кроме случаев, когда вы ссылались на него через ссылку на проект.
Пожалуйста, не стесняйтесь задавать любые вопросы о неправильно понятых деталях, или даже сказатьВозможно, я сам неправильно понял ваш вопрос и проблемы.
Я действительно надеюсь, что это поможет!