我想使用Reflection來動態填充我的複選框。C#在每個反射的名稱空間中獲取類的列表
我發現了一個幫助回答here
,並用它在我的代碼:
public static List<System.Type> getModuleList()
{
// fill with all Classes in Timestamp.View.UserControls.ModuleView per Reflection
List<System.Type> theList = Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.Namespace == "Timestamp.View.UserControls.ModuleView")
.ToList();
return theList;
}
我充滿了我的複選框,如:
foreach (System.Type type in ModuleController.getModuleList())
{
cbModule1.Items.Add(type);
cbModule2.Items.Add(type);
cbModule3.Items.Add(type);
cbModule4.Items.Add(type);
}
現在我想創建一個SelectedType的新實例
private void CbModule4_SelectionChanged(object sender, SelectionChangedEventArgs e) { ucModul4.Content = //new Instance of Selected Item }
我可以使用反射來創建一個新的實例,但我不知道如何。
- 我想給每個Class一個字符串,它將在複選框中顯示爲Item。這是可能的,還是我需要一個方法來通過它的字符串找到一個類?
編輯:我需要爭辯爲什麼我的問題從this one
不同所以首先這個問題只能解決我的問題之一,但我發現它較早,並沒有幫助我。我不知道如何獲得列表的類型,以及如何給班級一個別名。
不要去爲了反映名稱空間,定義一個共享接口,因爲它們似乎都有一些共同之處,然後只是獲得實現此接口的類型。然後你可以用打字的方式填充你想要的屬性,大概他們會有一個標籤和一個檢查屬性 – Icepickle
@Ippickle它們都有一個名爲IModuleView的共享接口。但是,我如何獲得實現此接口的所有類? – itskajo