我有这段代码,我目前正在适应使用嵌套实体(实体框架)。我有一个包含 2 个属性的实体,它们是 2 个子实体。
第一步是读取两个类的元数据,从第一个类开始,建立一个属性列表。这就完成了。现在我需要遍历我的对象以找到执行 DataBinding 的好属性。
这是我目前拥有的:
变量示例:
datasource = namespace.A
propriete = {System.Nullable`1[System.Int32] count}
propriete.DeclaringType {Name = "prop2" FullName = "Namespace.Metadata.prop2"}
代码 :
if (this.datasource != null)
{
var y = (T)this.datasource;
var propList = typeof(T).GetProperties();
if (propList.ToList().Contains(propriete))
{
TextBox.Text = DataBinder.Eval(y, propriete.Name).ToString();
}
else
{
TextBox.Text = ":( need child-support!";
}
}
我的主要问题是我的对象类型在运行时(类型 T)之前是未知的,所以我不知道如何找到我的字段。
快速模型:
Class A {
public B prop1;
public C prop2;
}
Class B {
int count;
string name;
}
Class C {
int count;
string name;
}
A.prop1.count = 1;
A.prop1.name = "a";
A.prop2.count = 2;
A.prop2.name = "b";
现在,我的属性名称都是唯一的(比计数/名称更具体),但我希望它们在某些时候是相同的(计数/名称)。
propriete 可能必须使用 DeclaringType/ReflectedType “过滤”非唯一名称。
考虑唯一名称的蛮力解决方案虽然不优雅,但可能会被接受。
额外问题:在使用主类时使用命名空间propriete
中包含的另一个部分类。metadata
datasource
(...如果您对该系统的功能感到好奇:它基于基于此 metadata.entity dataAttribute 的实体构建一个 html 表(带有 .net 控件)。)