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