我有一個包含類的字典。然而,我有很多課程要添加到字典中,我想消除長長的添加列表,因爲它開始顯得雜亂無章。我正在考慮將文件中的所有數據加載到字典中,然後我意識到每次我想創建並添加一個新類時,都必須修改該文件。我寧願不得不在我新創建的類中包含一些可以自動將它添加到字典中的東西。我甚至不確定這是可能的,所以我會很感激任何幫助。添加到字典中c#
添加到字典中c#
回答
嘗試使用反射來動態地找到所有需要的類。創建一個Assembly
的實例,在其中定義類並嘗試將其過濾掉。下面的例子展示瞭如何找到名字以Task
結尾的所有類。
var assembly = Assembly.GetExecutingAssembly();
var taskTypes = assembly.GetTypes()
.Where(t => t.Name.EndsWith("Task") && t.IsClass);
Dictionary<string, object> instances =
new Dictionary<string, object>(taskTypes.Count());
foreach (Type classType in taskTypes)
{
object instance = Activator.CreateInstance(classType);
instances.Add(classType.Name, instance);
Console.WriteLine("Registered key {0} with object of type {1})",
classType.Name,
instance);
}
我用Activator.CreateInstance
方法來創建類的實例,但是這可能不是你的情況是可能的,這取決於它們是否有參contructors等
另一種選擇可能是使用的一個可用的IoC容器,如autofac,但我需要關於您的問題的更多詳細信息,然後才能就此提供適當的建議。
這是完美的,但是如果不是添加以通用名稱結尾的所有類,而是添加從某個類派生的所有類。那可能嗎? –
其實Activator.CreateInstance將無法正常工作... –
什麼都不起作用?我已經發布了一個完整的例子[這裏](http://codepaste.net/y7jh82) - 希望這可以幫助 –
使字典成爲某個類的靜態字段,或者使「添加類到字典」成爲靜態方法。
然後,您可以使用靜態構造函數每個類添加到字典:
class ClassDict {
...
public static void AddClass(Type t) {
...
}
}
class Foo {
static Foo() {
ClassDict.AddClass(typeof(Foo));
}
}
- 1. C#在字典中添加字典
- 2. 添加到C#字典中的問題#
- 3. NullReferenceException將C#添加到字典中
- 4. obj-c將c-struct添加到字典
- 5. 添加到字典中的字典
- 6. Nhunspell C#將單詞添加到字典
- 7. 有效地添加到C#.NET字典
- 8. 將字典添加到字典
- 9. 瞭解字典,使用C#添加新值到字典
- 10. 優化字典在C#中添加ExpandoObjects
- 11. 添加類到字典
- 12. 添加到Python字典
- 13. NullReferenceException添加到字典時
- 14. 動態添加到字典
- 15. C#如果鍵在字典中仍然添加值在字典
- 16. 如何添加字典中的字典
- 17. 添加字典
- 18. 將數組添加到C中的字典中#
- 19. 將按鈕添加到目標中的數組/字典中C
- 20. 將1添加到字典中的值
- 21. 迭代列表中添加到字典
- 22. 將字典值添加到數組中
- 23. 將項添加到字典集中
- 24. 添加到列表中的字典
- 25. 將詞條添加到字典中
- 26. 添加方法選擇到字典中
- 27. 在字典中添加值到一組
- 28. 在Python 3.2中添加字典到字典裏
- 29. 如何將密鑰添加到字典列表中的字典?
- 30. 如何將字典添加到plist字典中?
是SQL的一個選項? –
當你說字典包含類時,你的意思是它包含類或類的實例的類型對象? – Guffa
Sql不是一個選項,它包含類的類型對象。 –