.NET 反射和依赖注入

深度理解依赖注入:http://kb.cnblogs.com/page/45266/

.NET 反射和依赖注入

接口反射:

接口层:接口(interface) 定义为DAL层

接口(interface)  Idal

使用反射技术(Reflection) 对Idal 使用工厂模式创建出锁需要的接口实例

例子:

 string path = "DAL";
    private DAL.Idal createIdal(string str)
    {
        string className = path + ".dal"+str;
        return (DAL.Idal)System.Reflection.Assembly.Load(path).CreateInstance(className);
    }

    public string getstr(string str)
    {
        Idal dal = createIdal(str);
        return dal.getString();
    }

依赖注入:

按照依赖注入的需求模式对

 接口:IA

A:IA

 接口:IB

B:IB

在A:IA 里面实现

IB的实例化(使用反射技术)

在主程序里就可以实现   IA的实例就可以调用IB的成员函数。

例子:

定义类库IDAL

IA.CS

using System;

namespace IDAL
{
    public interface IA
    {
        string show();
    }
}
IB.CS

using System;

namespace IDAL
{
    public interface IB
    {
        string getCode();
    }
}
A.CS

using System;

namespace IDAL
{
    public class A : IA
    {
        private IB ib = FACTORY.createIB();

        public string show()
        {
            return ib.getCode();
        }
    }
}
B.CS

using System;

namespace IDAL
{
    public class B : IB
    {
        public string getCode()
        {
            return "B";
        }
    }
}

FACTORY.cs   //反射时所需的接口工厂

using System;

namespace IDAL
{
    public class  FACTORY
    {
        static string path = "IDAL";
        static string className = "";

        public static IDAL.IA createIA()
        {
            className = path + ".A" ;
            return (IDAL.IA)System.Reflection.Assembly.Load(path).CreateInstance(className);
        }

        public static IDAL.IB createIB()
        {
            className = path + ".B";
            return (IDAL.IB)System.Reflection.Assembly.Load(path).CreateInstance(className);
        }
    }
}

调用函数

 IA ia = FACTORY.createIA();
 ia.show();

转自:http://blog.csdn.net/angelzjk/article/details/5620324

posted @   老皮肉  阅读(687)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示