【发布时间】:2020-05-25 18:39:01
【问题描述】:
我有一个使用字典的类。它有一个字符串键和对象值:
public class MyClass
{
public MyClass()
{
DynamicProperties.Add("Person", this.Person);
}
public IPerson Person { get; set; }
public IDictionary<string, object> DynamicProperties { get; set; } = new Dictionary<string, object>();
}
如您所见,我在类中有 IPerson 接口属性,我将其添加到字典中。 Student 和 Teacher 类正在实现这个接口:
public interface IPerson
{
}
public class Student : IPerson
{
}
public class Teacher : IPerson
{
}
我想按键获取该字典的当前值。这是我的代码:
static void Main(string[] args)
{
var myclass = new MyClass();
myclass.Person = new Student();
var studentFromDictionary = myclass.DynamicProperties["Person"]; // It should be Student
myclass.Person = new Teacher();
var teacherFromDictionary = myclass.DynamicProperties["Person"]; // It should be Teacher
}
我该怎么做? (我可以使用唯一实现 IDictionary 的字典)
【问题讨论】:
-
字典中的每个键下可能只有一个对象,所以你根本不能在同一个
"Person"键下故事Student和Teacher实例 -
另外,您的构造函数将
"Person"设置为null。此外,更改myclass.Person不会影响您的myclass.DynamicProperties -
@vasily.sib 是的,这就是我寻找解决方案的原因
-
@vasily.sib 即使“Person”未设置为空也不会影响)
标签: c# dictionary dynamic