希望达到的效果就是:平台发出读卡指令,可以调用任意品牌的ic卡读卡机。调用开门指令可以控制接入平台任意品牌的门锁。
现有条件:可以搭建一个平台,平台定一个通信标准,接入平台的各个品牌的IC卡读卡机,门禁设备要根据通信标准进行改造。
问题:如何定这个通信标准比较合适,各个厂家改动最少。
给你一个简化的原型例子:
按照如下步骤进行:
新建一个dll,叫做ReaderBaseLib,这个是一个公共的接口,你的主程序和所有的插件都引用它。
在里面编写如下的代码:
public interface IReaderBase
{
int GetID();
}
编译。
然后编写一个实现dll,新建一个类库,叫ReaderALib
项目 添加引用 引用ReaderBaseLib
编写代码
public class Reader : IReaderBase
{
public int GetID
{
//实现代码
return 1;
}
}
注意,修改namespace为 Reader
如法炮制,写一个ReaderBLib的dll
public class Reader : IReaderBase
{
public int GetID
{
//实现代码
return 2;
}
}
也把命名空间修改为Reader
新建一个exe项目作为主程序,引用 IReaderBase,注意,不要引用 ReaderA ReaderB
为了简化起见,读取配置文件的代码省略,这里直接从字符串读取
void Main()
{
string dllname = "ReaderALib.dll";
Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "\" + dllname);
object instance = assembly.CreateInstance("Reader.Reader");
IReaderBase r = instance as IReaderBase;
Console.WriteLines(r.GetID());
}
把所有的dll exe放在一起运行
注意,把程序里的ReaderALib.dll修改为ReaderBLib.dll,输出就变成2了。