【问题标题】:How to create a class with dynamic property (Expandoobject?)如何创建具有动态属性的类(Expandoobject?)
【发布时间】:2023-03-19 13:12:01
【问题描述】:

我有一个名为 Exam 的部分课程。类结构如下图:

public partial class Exam 
{
    public string ID { set; get; } //default
    public string Name { set; get; } //default
}

执行存储过程后,检索到的数据应包含一个或多个测试方法,如下结构所示。我想把检索到的数据放到动态对象考试中。如何为对象考试创建一个动态对象以及如何将数据绑定到这个动态对象?

ID, Name, Test1, Test2, Test3....
1, Peter, Y, N, Y
1, John, N, Y, Y

public virtual ObjectResult<Exam> sp_exam()
{
    return  ((IObjectContextAdapter)this).
              ObjectContext.ExecuteFunction<Exam>("ConnectionEntities.sp__exam");
}

【问题讨论】:

  • 您可以通过称为动态代理的方式来执行此操作。查看 Castle.Core 库的代码,并浏览有关此主题的网络。您当然也可以使用 DynamicObject,只是我不确定与 Castle 相比它的性能如何。

标签: c# expandoobject


【解决方案1】:

AFAIK ExpandoObject 只是简单字典的语法糖。所以你可以写:

public partial class Exam {
    public string ID { set; get; } //default

    public string Name { set; get; } //default

    public readonly Dictionary<string, object> ExtraProperties = new Dictionary<string, object>();
}

但我猜你只是有一个糟糕的对象模型。

【讨论】:

  • 你能用简单的字典动态输入吗?这是 ExpandObject 的一个非常简单的视图,并且忽略了它的一些细微特征。看看 Clay 或 ClaySharp,看看可以做什么。
  • @code4life can you dynamic type using a simple dictionary - 请澄清一下,这是什么意思
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 2020-01-08
  • 2018-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多