相关疑难解决方法(0)

C#如何在运行时动态生成实现不同接口的对象?

我正在研究如何解决问题,我甚至不确定在C#和.NET 3.5中这可能是完全可能的:

假设我的接口数量有限,每个接口都描述一组特定的,不相关的方法.现在我有一些现实世界的设备,每个设备可能只实现这些接口的一个子集.

在使用这些设备建立通信期间,他们会告诉我他们拥有哪些功能.我现在想创建一个实现接口的对象(每个接口类似于设备的一个功能),以便在我的应用程序架构中更高,我能够:

  • 针对上述接口编写代码
  • 测试生成的对象是否实现某个接口以查看是否支持某些操作

我根本不确定使用哪种方法解决这个问题.任何评论或方法最受欢迎!

c# interface dynamic

5
推荐指数
2
解决办法
1349
查看次数

不支持接口的映射,但Linq-Sql对象已经实现了属性

因此,我在 VS 中从现有数据库创建了一个 DataContext (Linq-Sql)。它有一个名为 Users 的表,因此我有一个User对象。我特别想关注UserIDUsername属性。

现在,我有一个界面:

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 == …

sql linq interface linq-to-sql linq-expressions

3
推荐指数
1
解决办法
697
查看次数

标签 统计

interface ×2

c# ×1

dynamic ×1

linq ×1

linq-expressions ×1

linq-to-sql ×1

sql ×1