圆形参考(提供者 - >模型 - >提供者)

时间:2013-09-22 23:10:17

标签: vb.net reference geometry

我正在创建一种新方法来完成项目中的工作,我需要一些帮助。 我的解决方案中有3个项目:

业务,提供商和模型。

MODEL项目,我就像数据库中的表一样拥有类: 例如:

public class Person
    property Id as integert?
    property Name as string
    property CPF as string
end class

PROVIDER项目是与数据库进行通信的项目:

public class PersonProvider
     public function ListPerson(filter as model.person) as list(of model.person)

     public sub insertPerson(byRef person as model.peson)

     public sub updatePerson(byRef person as model.peson)

     public sub deletePerson(byRef person as model.peson)
end class

最后,我有了BUSINESS项目,这是将CRUD方法暴露给网站的项目(该网站必须无法访问PROVIDER,因为我们在业务中有业务逻辑)

public class PersonBusiness
    public function ListPerson(filter as model.person) as list(of model.person)
           return (new provider.PersonProvider).listPerson(filter)
    end public

    public sub InsertPerson(byRef person as model.person)
           dim provider as new provider.PersonProvider()
           provider.insertPerson(person)
    end public

...

end class

但是,当我需要这样的内部联接时,我遇到了一个问题:

表CUSTOMER有一个id_person,所以在model.Customer中我有一个属性IdPerson作为整数?

但我想拥有model.Person所拥有的属性Name和CPF,只读取model.Customer中的属性,所以我做了:

    Property IdPerson As Integer?
    Private _person As Pessoa
    Private ReadOnly Property Person As model.Person
        Get
            If IsNothing(_person) Then
                _person = New provider.PersonProvider.ListPerson(new model.Person with {.Id = Me.IdPerson})
            End If
            Return _person 
        End Get
    End Property

    ReadOnly Property Name As String
        Get
            Return Me.Person.Name
        End Get
    End Property

    ReadOnly Property CPF As String
        Get
            Return Me.Pessoa.CPF
        End Get
    End Property

这就是问题......我发现我不能像以下那样引用:

网站参考模型和业务

提供者参考模型

业务参考模型和提供商

但要执行readonly属性模型需要引用Provider,这会导致圆引用..视觉工作室不允许我这样做...

知道怎么做吗?

很抱歉,我的帖子变得太长了,我只想说清楚。

1 个答案:

答案 0 :(得分:0)

您可以添加另一个引用Provider和Person的类,而不是通过网站和业务访问Model,而这个新类将由网站和业务引用(而不是直接引用Person的网站和业务)。

相关问题