c#泛型T函数,其中T来自字符串

本文关键字:其中 字符串 泛型 函数 | 更新日期: 2023-09-27 18:06:03

我正在为一个大型数据库创建设备和服务器之间的同步功能。我有很多列表表(下拉/选择器中的项目)。我不想写很多代码,我正在寻找一个优雅的解决方案:)

在SQLite中的设备上,我定义了如下的清单表

    public class NameTable : IBusinessEntity {
        public int Id { get; set; } = 0;
        public string Description { get; set; }
    }

当我在数据库中保存一个新的记录(项目)时,我调用这个函数

    public int SaveItem<T>(T item) where T : IBusinessEntity {
        lock (locker) {
            if (item.Id != 0) {
                database.Update(item);
                return item.Id;
            }
            else {
                return database.Insert(item);
            }
        }
    }

现在,当设备从服务器接收到一条新记录时,结构类似于

    public class SyncResult {
        public int DeviceId { get; set; }
        public int ServerId { get; set; }
        public string TableName { get; set; }
        public string Description { get; set; }
    }

然后我想保存(插入一个新的记录,如果DeviceId == 0或更新一个现有的项目)。

我的问题是:我怎么能调用SaveItem哪里TTableNameSyncResult?

提前感谢您的任何帮助(我可以提供啤酒!)


SaveItemMyDatabase类的成员。基本上我的问题是如何传递给SaveItem<T>的T作为字符串。

我不知道我是否解释清楚了我的问题。

c#泛型T函数,其中T来自字符串

您可以将TableName映射到Type,例如Dictionary<string,Type>。使用Activator类来构造类型。使用反射来填充数据