gpt4 book ai didi

c# - 无法访问 Dictionary 值项。 C#

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:31 25 4
gpt4 key购买 nike

我在玩字典和字典中新奇特的 4.0 动态类型。

我有一个字典:

Dictionary<dynamic, dynamic> dynamicDic

然后我这样填充它:

dynamicDic.Add("First", new Class1());
dynamicDic.Add("Second", new Class2());

为了测试/练习,Class1 和 Class2 非常简单:

public class Class1
{
public string Element { get; set; }

public List<Class2> Class2 { get; set; }
}

public class Class2
{
public string Property { get; set; }

public string Field;
}

我创建了另外两个映射 class1 和 class2 的类,它们实际上是相同的,所以 ClassMap1 和 ClassMap2。不过,我将只包含 CalssMap1:

public class ClassMap1: BaseClassMap1
{
public ClassMap1()
{
var r = new Class1();
Children = new Dictionary<string, dynamic>
{
{"Element", r.GetType().GetProperty("Element")},
{"Class1", r.GetType().GetProperty("Class1")}
};
Name = "Root";
ObjectType = typeof (Class1);
Parent = "RootElement";
HasParent = false;
HasChildren = true;
IsClass = r.GetType().IsClass;
}
}

然后我创建了一个基类:BaseClass1()

public class BaseClass1
{
private String _Name;

public String Name
{
get { return _Name; }
set { _Name = value; }
}

private Type _ObjectType;

public Type ObjectType
{
get { return _ObjectType; }
set { _ObjectType = value; }
}

private String _Parent;

public String Parent
{
get { return _Parent; }
set { _Parent = value; }
}

private Dictionary<string, dynamic> _Children;

public Dictionary<string, dynamic> Children
{
get { return _Children; }
set { _Children = value; }
}

private bool _HasParent;

public bool HasParent
{
get { return _HasParent; }
set { _HasParent = value; }
}

private bool _HasChildren;

public bool HasChildren
{
get { return _HasChildren; }
set { _HasChildren = value; }
}

private bool _IsClass;

public bool IsClass
{
get { return _IsClass; }
set { _IsClass = value; }
}
}

我用数据填充类,什么数据并不重要:)

然而,当我尝试通过 Linq 语句访问这些​​值时:

var a = _classObjects.SingleOrDefault(x => x.Key == node.Name).Value;

a 只给我:-

a.Equals(), a.GetType(), a.GetEnumerator() or a.ToString()

我希望能够让它执行此操作(使用智能感知)...

a.Children
a.Name
a.HasParent

等...

有人知道我哪里出错了吗?

哎呀完全错了......抱歉:|上面编辑...

最佳答案

dynamic类都是关于运行时(不是编译时)发现的。您如何期望 Intellisense 知道该做什么?

使用 dynamic类会产生很高的性能开销。我真的建议你做到:Dictionary<string, dynamic> dynamicDic .

或者定义一个MyBaseClass并制作:Dictionary<string, MyBaseClass> myDic .

关于c# - 无法访问 Dictionary<dynamic, dynamic> 值项。 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566915/

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