0
У меня есть класс, как этотДинамическое создание класса универсального типа
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.
Привет Юваль, я могу создать obejct из presenterBase, но как преобразовать его в общий класс ViewModelBase.or я должен подойти по-другому –