设置c#动态对象类型名称
本文关键字:类型 对象 动态 设置 | 更新日期: 2023-09-27 18:08:05
我想保存一个动态对象到数据库。数据库表名将动态设置。所以我没有课。
private static dynamic CreateModel()
{
var model = string.Format("{{'id': '{0} - {1}', 'name':' Path - ', 'length':'{2}' }}", Guid.NewGuid(), DateTime.Now,new Random().NextDouble() * 10 );
return JsonConvert.DeserializeObject(model);
}
创建一个动态对象。我正在将其添加到实体框架通用存储库中。
using (var repository = new EFRepository(new Context()))
{
repository.SaveOrUpdate<????>(CreateModel())
}
我不能设置类型名称。我可以在这里设置一个随机的名字
(repository.SaveOrUpdate<T>
为泛型方法)
你不能那样使用EF
你不能传递动态do SaveOrUpdate方法,因为dynamic
可以是任何东西,可以是String, Int或Object。编译器在运行应用程序之前永远不会知道这一点,因为dynamic
类型在编译时不会解析,而是在运行时解析。
说,正如你可以想象的那样,你不能在泛型<T>
中使用动态,因为T需要是一个引用,它在运行时解决动态。
我认为一个更好的方法是使用OO来帮助你,创建一个带有工厂的基类来构造你的动态对象,并使用这个基类而不是动态。