我正在研究如何解决问题,我甚至不确定在C#和.NET 3.5中这可能是完全可能的:
假设我的接口数量有限,每个接口都描述一组特定的,不相关的方法.现在我有一些现实世界的设备,每个设备可能只实现这些接口的一个子集.
在使用这些设备建立通信期间,他们会告诉我他们拥有哪些功能.我现在想创建一个实现接口的对象(每个接口类似于设备的一个功能),以便在我的应用程序架构中更高,我能够:
我根本不确定使用哪种方法解决这个问题.任何评论或方法最受欢迎!
因此,我在 VS 中从现有数据库创建了一个 DataContext (Linq-Sql)。它有一个名为 Users 的表,因此我有一个User对象。我特别想关注UserID和Username属性。
现在,我有一个界面:
interface IUser
{
int Id { get; }
string Username { get; }
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个部分User类并实现IUser. 这样做的原因是,我可以在许多地方将任何 User 视为 IUser,而不必关心确切的 User 类:
public partial class User : IUser
{
public int Id
{
get { return UserID; }
}
}
Run Code Online (Sandbox Code Playgroud)
我没有实现Usernameget 属性,因为我知道实体对象已经实现了它。
当我有一个查询时,dc.Users.SingleOrDefault(p => p.Id == 5);我知道这是一个错误,因为它会将该调用转换为 SQL 语句,并且它会尝试查找Id不存在的列 - UserID 存在。所以我理解这个映射问题。
当我查询时dc.Users.SingleOrDefault(p => p.Username == …