如何像传递变量一样将差异类型传递到函数中

本文关键字:类型 异类 函数 一样 变量 何像传 | 更新日期: 2023-09-27 18:28:05

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();

如何像传递变量一样将差异类型传递到函数中

使用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

我真的不确定,但我认为你试图推广控件的创建,不如这样做:

ifactory.AddControl(() => { new datepickerclass() });
public void AddControl<T>(Func<T> factory)
    where T : BaseControlType
{
    var instanceOfControl = factory();