组织方法以更好地访问它们
我正在尝试创建一个通用库,它将拥有管理数据库数据的所有方法。
这个库将有很多方法,所以我想让它更有条理。 我希望它与以下语法一起使用。
db.setData().insertNewAccount(username, password); db.modifyData().deleteAccount(username, password); db.getData().getAccount();
如果我键入setData,我将如何使其工作,例如与setData相关的示例方法将显示。
如果你真的想这样做,那么你可以做这样的事情(伪代码):
class DataRepository { public SetDataHelper setData() { return new SetDataHelper(); } public ModifyDataHelper modifyData() { return new ModifyDataHelper(); } public GetDataHelper getData() { return new GetDataHelper(); } } class SetDataHelper { public void insertNewAccount(username, password) { ... } } class ModifyDataHelper { public void deleteAccount(username, password) { ... } } class GetDataHelper { public Account getAccount() { ... } }
然后你可以按照自己的方式,更流利地做到:
var db = new DataRepository(); db.setData().insertNewAccount(username, password); db.modifyData().deleteAccount(username, password); db.getData().getAccount();
听起来你正在以错误的方式接近这一点 – 通常你会有类似AccountRepository
类的东西,所有成员都与账户相关; 然后你会(比方说)一个ArticleRepository
类,其中包含与文章相关的所有成员。
换句话说,按照您正在处理的数据类型进行组织,而不是您是否尝试获取,更新,插入等。
然后,您可以使用依赖项注入,以便为每个业务类仅提供它使用的存储库。
您可以创建具有不同function的不同接口,您的类可以实现所有这些接口。 然后,你的setData()
可以返回类本身,转换为相应的接口。 例如:
interface SetData { int insertNewAccount(A, B); } interface ModifyData { int deleteAccount(A, B); } interface GetData { int getAccount(A, B); } class DBHandler : SetData, ModifyData , GetData { // // Implement the interfaces... // // Returns the interfaces SetData setData(){ return (SetData)this; } ModifyData modifyData (){ return (ModifyData )this; } GetData getData (){ return (GetData )this; } }
它可以满足您的需求,当然也可以根据您的项目使用访问修饰符。 此解决方案不会阻止您直接到达已实现的接口函数,这将需要另一个类,或者代理所有对DB类的调用。
- 使用ImageResizer获取图像尺寸的最佳方法
- 使用凭据的.NET进程启动进程错误(句柄无效)
- 在.NET程序集或可执行文件中嵌入文本文件
- Signalr / Hub未在IIS 7中加载,但在Visual Studio中正常工作
- 测试条件然后锁定然后重新测试条件是好的
- ASP.NET vNext – MissingMethodException:找不到方法:Microsoft.CodeAnalysis.Diagnostic> EmitResult.get_Diagnostics()’
- string.GetHashCode()在debug vs release中返回不同的值,我该如何避免这种情况?
- 从c#中检测os语言
- 属性网格仅显示某些类别