-4

キーとして構造体を含む辞書があります。辞書のプロパティを作成する必要があります

プロジェクト1

namespace ClassLibrary2
{
  public class Class1
  {
    public Dictionary<string, Cs> mdic;
    public Class1()
    {
        mdic = new Dictionary<string, Cs>();
        mdic.Add("Welcome", new Cs() { m1 = "12",m2="32"});
    }

    public Dictionary<string, Cs> Dic
    {
        get {return mdic;}
        set { value = mdic; }
    }

    public struct Cs
    {
        public string m1{get;set;}
        public string m2{get;set;}
    }
}

この値を設定しようとすると、project 1エラーが表示されます...

このように設定しました

project2

namespace WindowsFormsApplication20
{
  public partial class Form1 : Form
  {
     public Form1()
     {
        InitializeComponent();
     }

     private Dictionary<string, Cs> Dic
     {
        get;
        set;
     }

     struct Cs
     {
         public string m1 { get; set; }
         public string m2 { get; set; }
     }

     private void button1_Click(object sender, EventArgs e)
     {
        ClassLibrary2.Class1 css = new ClassLibrary2.Class1();
        Dic = css.Dic;
     }
 }

私は問題を抱えています css.Dic ..... System Generic Collections

4

3 に答える 3

2

Dictionary<string, ClassLibrary2.Class1.Cs>ClassLibrary2.Class1.Cs 構造体と WindowsFormsApplication20.Form1.Cs 構造体は 2 つの異なる型であるため、型の変数にa を割り当てることはできませんDictionary<string, WindowsFormsApplication20.Form1.Cs>。代わりに、次のように Form1 から Cs 宣言を削除してみてください。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private Dictionary<string, ClassLibrary2.Class1.Cs> Dic
    {
        get;
        set;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        ClassLibrary2.Class1 css = new ClassLibrary2.Class1();
        Dic = css.Dic;
    }
}
于 2012-10-25T11:20:44.097 に答える
0

Form1 の辞書定義は次のようになります。

private Dictionary<string, ClassLibrary2.Class1.Cs> Dic
{
    get;
    set;
}
于 2012-10-25T11:22:40.483 に答える
0

以前の質問のコメントで既に回答を受け取っています。

あなたClassLibrary2.Class1.CSWindowsFormsApplication20.Form1.CSは異なる構造体です。

WindowsFormsApplication20 では、新しい CS 構造体を宣言しないでください。ClassLibrary2 名前空間を使用するだけです。

using ClassLibrary2;

namespace WindowsFormsApplication20
{
  public partial class Form1 : Form
  {
     public Form1()
     {
        InitializeComponent();
     }

     private Dictionary<string, Class1.Cs> Dic
     {
        get;
        set;
     }

     private void button1_Click(object sender, EventArgs e)
     {
        ClassLibrary2.Class1 css = new ClassLibrary2.Class1();
        Dic = css.Dic;
     }
 }
于 2012-10-25T11:24:19.700 に答える