设置C#动态对象类型名称

时间:2016-09-20 12:01:59

标签: c#

我想将动态对象保存到数据库。将动态设置数据库表名称。所以我没有上课。

    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>是一种通用方法)

1 个答案:

答案 0 :(得分:0)

你不能那样使用EF。

您无法传递动态执行SaveOrUpdate方法,因为dynamic可以是任何东西,可以是String,Int或Object。在运行应用程序之前,您永远不会知道这个编译器,因为dynamic类型在编译时但在运行时没有得到解决。

如果你可以成像,你就不能在泛型<T>中使用动态,因为T需要是一个引用,它是在运行时解决的动态。

我认为更好的方法是使用OO来帮助您,使用工厂创建基类来构建动态对象,并使用此基类而不是动态。