我想让两个班级互相沟通。我想使用字典来添加项目。我简化了我的模式以轻松解决它。如何使用字典添加新项目。
我想只生成MyClass
的一个实例。这很重要。这是一种诡计......
public interface IHost
{
}
public class MyClass:IHost
{
public Dictionary<int,string>; dic { get; set;}
public MyClass()
{
dic = new Dictionary<int,string>();
}
}
public class MyClass2 : IHost
{
public MyClass()
{
}
public void Save()
{
dic.Add(1,"vxcvcx");
}
}
我得到的错误:
当前上下文中不存在名称“dic”
答案 0 :(得分:2)
只需将MyClass
作为构造函数变量传递给class2:
public class MyClass:IHost
{
public Dictionary<int,string> dic { get; set;}
public MyClass()
{
dic = new Dictionary<int,string>();
}
public void Add(int key, string value)
{
dic.Add(key, value);
}
}
public class MyClass2 : IHost
{
MyClass1 _class1;
public MyClass2(MyClass1 instance)
{
_class1 = instance;
}
public void Save()
{
_class1.Add(1,"vxcvcx");
}
}
答案 1 :(得分:1)
或者:
someMyClass1.dic.Add()
?dic.Add()
的调用将起作用,因为它将dic
设置为MyClass1的{{1}的值}。答案 2 :(得分:1)
使用基类而不是接口:
abstract class MyBaseClass
{
public Dictionary<int,string> dic { get; set; }
public MyBaseClass()
{
dic = new Dictionary<int, string>(5);
}
public void Add(int key, string value)
{
dic.Add(key, value);
}
}
public class MyClass1 : MyBaseClass
{
public MyClass1():base()
{
}
}
public class MyClass2 : MyBaseClass
{
public MyClass2():base()
{
}
public void Save()
{
Add(1, "somevalue");
}
}
答案 3 :(得分:0)
创建MyClass1单例并从MyClass 2访问dic变量...我是否正确理解了场景?
答案 4 :(得分:0)
我将解决这个明显的问题。
public Dictionary<int,string>; dic { get; set;}
应该是
public Dictionary<int,string> dic;
以下代码不起作用,您必须在MyClass2中定义 Dictionary 变量,以使此代码有效。
public class MyClass2 : IHost { public MyClass() { } public void Save() { dic.Add(1,"vxcvcx"); } }
如果作者更新了问题,并实际解释了他们想要实现的目标,我将更新我的答案。
我应该添加... MyClass 类不是必需的,字典应该在 MyClass2
中创建