Tôi khá mới đối với C# và tôi đến từ nền Ruby. Tôi vẫn còn rất nhiều điều cần tìm hiểu và đó là lý do tại sao tôi hỏi câu hỏi sau:Từ điển C# sử dụng TValue trong một Từ điển khác
Mục tiêu: 1) Tôi muốn tạo một từ điển với chuỗi như khóa và bất kỳ loại đối tượng nào tôi muốn làm giá trị. Một cái gì đó như thế này:
Dictionary<string, T>
2) Nhưng đó không phải là tất cả. Tôi cũng muốn một từ điển "Thạc sĩ" với chuỗi như các khóa và từ điển được mô tả ở trên làm giá trị. Something như thế này:
Dictionary<string, Dictionary<string T>>
Tôi muốn nó được như vậy vì vậy tôi có thể làm việc như ví dụ dưới đây:
MasterDictionary[Dict1].Add(Thing1)
MasterDictionary[Dict2].Add(Thing2)
Mã hiện tại: Tôi đang cố gắng để đạt được sử dụng này đoạn mã sau
public List<string> DataTypes;
public Dictionary<string, Dictionary<string, object>> TempData;
public Dictionary<string, Dictionary<string, object>> GameData;
public Session()
{
// Create a list of all Data Types.
DataTypes = new List<string>();
DataTypes.Add("DataInfo");
DataTypes.Add("Maps");
DataTypes.Add("Tilesets");
// Create and populate TempData dictionary.
TempData = new Dictionary<string, Dictionary<string, object>>();
TempData.Add("DataInfo", new Dictionary<string, DataInfo>());
TempData.Add("Maps", new Dictionary<string, Map>());
TempData.Add("Tilesets", new Dictionary<string, Tileset>());
// Create GameData dictionary and copy TempData into it.
GameData = new Dictionary<string, object>(TempData);
}
vấn đề: tôi nhận được các lỗi sau đây
1) Đối sánh phương thức quá tải tốt nhất cho 'System.Collections.Generic.Dictionary> .Thêm (chuỗi, System.Collections.Generic.Dictionary)' có một số đối số không hợp lệ
2) Lỗi 10 Đối số 1: không thể chuyển đổi từ 'System.Collections.Generic.Dictionary>' thành 'System.Collections.Generic.IDictionary'
Những dòng này được gạch dưới màu đỏ
TempData.Add("DataInfo", new Dictionary<string, DataInfo>());
TempData.Add("Maps", new Dictionary<string, Map>());
TempData.Add("Tilesets", new Dictionary<string, Tileset>());
// Create GameData dictionary and copy TempData into it.
GameData = new Dictionary<string, object>(TempData);
tôi đã làm rõ điều gì sai hoặc thậm chí bất hợp pháp ở đây, tôi chỉ cần biết nó là gì và tôi có thể sửa nó như thế nào!
Tôi đã tự nghiên cứu rất nhiều nhưng không tìm thấy gì có thể giúp tôi về điều này. Tôi đã thấy làm thế nào để tạo một từ điển từ điển nhưng tôi không hoàn toàn chắc chắn làm thế nào để nói với một từ điển không quan tâm về loại đối tượng trong Giá trị.
Tôi biết "T" có thể là của một số sử dụng ở đây nhưng tôi không thực sự biết làm thế nào để sử dụng nó vì nó luôn luôn nói với tôi "Loại hoặc namespace tên 'T' không thể tìm được"
Vì vậy, tôi nên làm gì?
Cảm ơn trước - Sasha
Phương pháp này dường như hoạt động rất tốt! – Sasha