如何将差异类型传递给函数,如传递变量

时间:2013-08-19 08:50:48

标签: c# wpf

DatePickerOfItemsControl,TextBoxOfItemsControl,ComboBoxOfItemsControl是类,如何将这些类传递给函数,如传递变量

用于保存这些类或键入为变量的函数,并在需要时使用它来创建实例

ifactory.AddControl(DatePickerOfItemsControl);
ifactory.AddControl(TextBoxOfItemsControl);
//ifactory.AddControl(textbox2);
ifactory.AddControl(ComboBoxOfItemsControl);
ifactory.AddControl(RadioBoxOfItemsControl);

public void AddControl(Object c)
{
    datepickerclass = DatePickerOfItemsControl;


public void Apply()
{
     datepickerclass datepicker = new datepickerclass();

2 个答案:

答案 0 :(得分:1)

使用Type

public void AddControl(Type c)
{

}

您可以使用Activator.CreateInstance()创建类型的实例:

public void AddControl(Type c)
{
    object o = Activator.CreateInstance(c);
}

然后这样称呼:

AddControl(typeof(RadioBoxOfItemsControl));

请参阅MSDN -

http://msdn.microsoft.com/en-us/library/wccyzw83.aspx

答案 1 :(得分:0)

我不是很确定,但我认为你试图推广控件的创建,所以如何做到这样:

ifactory.AddControl(() => { new datepickerclass() });

public void AddControl<T>(Func<T> factory)
    where T : BaseControlType
{
    var instanceOfControl = factory();