C# 当某些功能共享时,设计数据层、多个接口或单个接口的更好方法是什么?
我正在设计的解决方案中的数据存储是数据库、队列和Csv文件 其中一些功能在两者中都很常见,例如Csv文件和DBs都有GetNames()方法-名称信息位于Csv和DB中,其中一些方法仅对DB有效,而对Csv无效,例如。 GetAddressOfPerson(Person-Person)是一种适用于DB的方法,因为DB包含地址信息,但不适用于CSV文件,因为它们没有地址信息 另一个例子是属性。有些属性是通用的,例如bool IsTestMode对于两个DAO都是通用的,但有些属性不是通用的,例如PersonsFilePath 在进行体系结构设计时,我创建了一个接口:IPersonDao,它包含任何类所实现的所有方法和属性 相关实现IPersonCsvDao和IPersonDBDao以及IPersonQueueDao实现了所有的方法和属性,但是,如果方法不属于DAO,它们在实现中抛出“未实现异常” 例如 CsvDao:C# 当某些功能共享时,设计数据层、多个接口或单个接口的更好方法是什么?,c#,.net,architecture,C#,.net,Architecture,我正在设计的解决方案中的数据存储是数据库、队列和Csv文件 其中一些功能在两者中都很常见,例如Csv文件和DBs都有GetNames()方法-名称信息位于Csv和DB中,其中一些方法仅对DB有效,而对Csv无效,例如。 GetAddressOfPerson(Person-Person)是一种适用于DB的方法,因为DB包含地址信息,但不适用于CSV文件,因为它们没有地址信息 另一个例子是属性。有些属性是通用的,例如bool IsTestMode对于两个DAO都是通用的,但有些属性不是通用的,例如P
列出GetPersonalAddress(个人)
{
抛出新的NotImplementedException();
}
DBDao:
List<Address> GetPersonAddress(Person person)
{
//connect to db table
//return list<address>
}
列出GetPersonalAddress(个人)
{
//连接到数据库表
//返回列表
}
排队道:
List<Address> GetPersonAddress(Person person)
{
throw new NotImplementedException();
}
列出GetPersonalAddress(个人)
{
抛出新的NotImplementedException();
}
我不确定这是否正确,因为有许多方法没有实现异常。我不确定为该解决方案创建数据层的最佳方法是什么?如果您遵循,我认为您应该这样做。这还可以通过执行
is
检查或as
强制转换来“检测”哪些方法受支持,哪些不受支持。如果您遵循,我认为您应该这样做。这还可以通过执行is
检查或as
强制转换来“检测”哪些方法受支持,哪些不受支持。据我所知,您将实现树状结构,其中存在的类具有公共属性
(在主流基础类中编写它们
/接口
),但在某种派生级别上,类变得更加延迟(有些类仍然共享相同的函数
/属性
,有些类共享其他属性),从那时起,您将为您拥有的每一组类实现一个新的基类
希望我的意思很清楚。据我所知,您将实现树状结构,其中存在的类有一个公共的
属性(在主流基类类/接口),但在某种派生级别上,类变得更加延迟(其中一些仍然共享相同的函数
/属性
,一些共享其他属性),从那时起,您将为您拥有的每一组类实现一个新的基类
希望你能明白我的意思
List<Address> GetPersonAddress(Person person)
{
throw new NotImplementedException();
}