gpt4 book ai didi

c# - 未知类型的动态,这还能如何实现?

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:04 25 4
gpt4 key购买 nike

我有一些代表数据库表的类(实体)

public class ALBUM
{
public int Id { get; set; }
public string Name { get; set; }
public int Tracks { get; set; }
}
public class BOOK
{
public int Id { get; set; }
public string Author { get, set; }
}

然后获取各个存储过程的参数,insert,update,any

public Command getParameters(string spName, dynamic entity, Connection conn)
{
Command cmd = conn.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = spName;

// Get properties (fields) from entity (table)
PropertyInfo[] properties = entity.GetType().GetProperties();

for (int = 0; i < properties.Length; i++)
{
// here I set Parameters: name, DBType, and Value from properties
}
}

现在我打电话

public void Some()
{
ALBUM someAlbum = new ALBUM();
BOOK anyBook = new BOOK(); // all respective data from DB is set

Command newCommand = getParameters("myAlbumSP", someAlbum, myConnection);
Command newCommand = getParameters("mySPBooks", anyBook, myConnection);
}

我还怎么定义“实体”参数?不是动态的。
它有效,只是我正在寻找其他方法,我相信有很多。

最佳答案

在您的情况下,entity 并不需要动态的(尽管它肯定没问题)。使用 object 就足够了,因为您不会调用 object 提供的内容之外的任何内容。这行得通,因为您使用了反射。另一方面,使用 dynamic,您可以指定在 object 上找不到的属性,编译器不会报错。

例如,由于 ALBUMBOOK 都有一个 Id 参数,您可以这样写:

var entityId = entity.Id;

只要 entitydynamic 就可以工作;它不适用于对象

关于c# - 未知类型的动态,这还能如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15444112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com