簡體   English   中英

動態創建通用類型的類

[英]Dynamically creating a class of generic type

我有這樣的課

public class ViewModelBase<T> : Notifier
{
    private readonly string _tabHeaderPath;
    private readonly T _view;
    public ViewModelBase(T view)
    {
        _view = view;
    }
    public ViewModelBase(T view, string tabHeaderPath)
    {
        _view = view;
        _tabHeaderPath = tabHeaderPath;
    }
    public T View
    {
        get { return _view; }
    }
    public string TabHeaderPath
    {
        get { return _tabHeaderPath; }

    }
}

我想使用類似這樣的反射來獲取此對象。

object PresenterBase= null;
Assembly assembly =  Assembly.GetExecutingAssembly();
object objView = null;
// Walk through each type in the assembly looking for our class
foreach (Type type in assembly.GetTypes())
{
    if (type.IsClass == true)
    {
        if (type.FullName.EndsWith("." + "GeneralEnquiryViewModel"))
        {
            // create an instance of the object


            foreach(Type objType2 in assembly.GetTypes())
            {
                if(objType2.IsClass==true)
                {
                    if (objType2.FullName.EndsWith("." + "GeneralEnquiryView"))
                    {
                        objView = Activator.CreateInstance(objType2);
                        break;
                    }
                }
            }
            ConstructorInfo ctor = type.GetConstructor(new[] { typeof(GeneralEnquiryView), typeof(string) });

             PresenterBase= ctor.Invoke(new object[] { objView, "GeneralEnquiry" });
         }
    }
}

我可以這樣做:

ViewModelBase<GeneralEnquiryView> objPresenter = GeneralEnquiryViewModel(PresenterBase);

但是我想將GeneralEnquiryView替換為objview,將GeneralEnquiryViewModel替換為PresenterBase,以便獲得objPresenter的實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM