可以全局设置接口实现使用吗?我有一个接口:publicinterfaceIHHSDBUtils{voidSetupDB();boolTableExists(字符串表名);......有多个实现者:公共类SQLiteHHSDBUtils:IHHSDBUtils公共类SQCEHHSDBUtils:IHHSDBUtils公共类FlatfileHHSDBUtils:IHHSDBUtilspp:IHHSDBUtils;...然后从应用程序的任何位置调用它:privateHHSDBUtilshhsdbutils{get;放;}。..hhsdbutils=newHHSConsts.hhsdbutil;hhsdbutils.SetupDB();这可能吗?我明白了,“‘SQLiteHHSDBUtils’是一个‘类型’,但在上面的hhsdbutil中用作‘变量’。你可以通过为每种类型创建一个枚举来做一个穷人的工厂实现,并为你创建一个静态工厂方法创建类型.我尽可能接近你当前的代码片段。publicenumHHSDBUtilsTypes{Sqllite,SQCE,Flatfile,Test}publicstaticclassHHSConsts{privateconststringimplementation=HHSDBUtilsTypes.Sqllite;//你可以从配置文件中读取这个publicstaticIHHSDBUtilsGetUtils(){IHHSDBUtilsimplementation;开关)({caseHHSDBUtilsTypes.Sqllite:impl=newSQLiteHHSDBUtils();break;caseHHSDBUtilsTypes.SQCE:impl=newSQCEHHSDBUtils();break;caseHHSDBUtilsTypes.Sqllite:impl=newFlatfileHHSDBUtils();break;default:impl=新测试H);休息;}返回暗示;你会像这样使用它:privateIHHSDBUtilshhsdbutils{get;放;}//。..hhsdbutils=HHSConsts.GetUtils();hhsdbutils.SetupDB();使用Activator.CreateInstance。conststringfulltypename="Your.Namespace.SQLiteHHSDBUtils";//或者从配置中读取;hhsdbutils=(HHSDBUtils)Activator.CreateInstance(null,fulltypename).Unwrap();确保测试和衡量性能,尤其是当您需要通过任何这些方法实例化许多类型时。如果您想要更多控制,请使用依赖注入/控制反转框架,例如:请注意,所有这些框架都带来了强大的功能,但也增加了复杂性。如果您认为必须选择一个框架,请将可维护性和可学习性作为您的主要要求。这里有一些关于DI的额外文档以上是C#学习教程:CanIgloballysettheinterfaceimplementationtouse?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
