基于c# 松耦合解决方案

发布于:2023-01-15 ⋅ 阅读:(547) ⋅ 点赞:(0)

ImplementFactory 组件为自动扫描接口类型成员、自动为接口类型成员装配接口实例(实现依赖注入IoC机制)、面向接口操作数据源、采用ORM方式操作数据源、实现接口实例加载拦截、接口方法调用拦截(AOP)、以及对应的异常拦截提供了一个有效的解决方案。
 

在c#程序开发中,ImplementFactory组件为业务层级之间的解耦提供了一个很好的解决方案。你只需简单的代码实现就可解除模块之间代码的紧密关联,轻松实现依赖注入




使用ImplementFactory组件可以轻松实现接口实例自动装配工作,及面向接口对数据源进行查询、新增、修改、删除的操作。

不仅仅如此,你还可以根据数据动态提供sql表达式语句

同样你也可以采用ORM(Object Relational Mapping)的方式访问数据源。

建立数据模型关系:

WorkInfo 数据模型:
public class WorkInfo : AbsDataModel
{
    public virtual int id { get; set; }
    public virtual int EmployeeInfoID { get; set; }
    public virtual string CompanyName { get; set; }
    public virtual string CompanyNameEn { get; set; }

    [Constraint(foreignKey: "EmployeeInfoID", refrenceKey: "id")]
    public virtual EmployeeInfo employeeInfo { get; set; }
}


EmployeeInfo 数据模型:
public class EmployeeInfo : AbsDataModel
{
    public virtual int id { get; set; }
    public virtual string name { get; set; }
    public virtual string address { get; set; }
    public virtual string telphone { get; set; }

    [Constraint(foreignKey:"id", refrenceKey: "EmployeeInfoId")]
    public virtual List<WorkInfo> WorkInfos { get; set; }
}

实现数据查询功能:

无需复杂繁琐的配置,轻松实现表关系: 

1、当数据模型采用集合(Array或List)来描述关系时,表示当前数据模型与该集合子元素为一对多的关系

2、当数据模型属性类型采用另一个数据模型来描述关系,且另一个数据模型采用集合 (Array或List),而集合元素类型是当前数据模型,表示当前数据模型与属性类型为多对一的关系

3、当前数据模型属性类型采用另一个数据模型,而另一个数据模型与之关联的属性类型也采用当前数据模型,表示当前数据模型与属性类型对应的数据模型为一对一的表关系

  

Insert\Update\Delete操作同样简单

在使用ImplementFactory组件过程中,创建一个继承 AutoCall类的子类,可以方便的对每一个接口及接口方法进行有效的控制(AOP机制:面向切点)和异常拦截处理。

通过继承 AutoCall类,很方便的实现AOP机制,利用AOP机制拦截任何一个与之相关的接口实例和接口方法。

以此同时,进行数据操作情况,你可以选择ImplementFactory所提供的数据适配器,如果你对数据源适配有特殊需求,你也可以选择自己提供一个有效的数据源适配器,而你只需要实现IDbHelper接口就可以为ImplementFactory提供一个有效的数据适配器。

默认情况下,AutoCall 是采用实例引用的机制:

根据实际需求,你也可以采用实例非引用机制,而这仅需在AutoCall 的基础上增加 SingleCall 即可:

如何在 VS 中使用该组件?

在 Visual Studio 中使用 Nuget 搜索 ImplementFactory 引用该组件:

          如果你的项目是 .net framework 请选择 ImplementFactory.Framework 包;

          如果你的项目是 .net core 请选择 ImplementFactory.NetCore 包

如何使用 NuGet ?

         如果你的项目是 .net framework 那么在 “引用” 项右键选择 “管理 NuGet 程序包” 

 

        如果你的项目是 .net core 那么在 “依赖项” 项右键选择 “管理 NuGet 程序包

您可以获取该组件的使用案例源码https://github.com/daijiu77/ImplementFactory-simple-example.git

该组件所有代码已开源,意在提倡广大C#开发人员支持代码开源、参与代码开源。如果您对该组件有新的想法或相关代码修正、功能扩展都可联系本人。

您可到 github 获取源码:  https://github.com/daijiu77/ImplementFactory.git


网站公告

今日签到

点亮在社区的每一天
去签到