Я не могу найти ответ на этот вопрос путем поиска, поэтому здесь идет....
Я знаю, что я могу передавать объекты класса в общих чертах другим классам, используя этот тип кода:
public class ClsGeneric<TObject> where TObject : class
{
public TObject GenericType { get; set; }
}
Тогда построим таким образом:
ClsGeneric<MyType> someName = new ClsGeneric<MyType>()
Однако у меня есть приложение, которое требует от меня открыть форму и каким-то образом перейти в общий тип для использования в этой форме. Я пытаюсь повторно использовать эту форму для разных типов классов.
Кто-нибудь знает, если это возможно, и если да, то как?
Я немного экспериментировал с конструктором формы, но безрезультатно.
Большое спасибо заранее, Dave
ОБНОВЛЕНО: Разъяснение того, к какому результату я пытаюсь достичь,
ОБНОВЛЕНО: 4-й AUG, я немного продвинулся дальше, но я предлагаю щедрость для решения. Вот что у меня есть сейчас:
interface IFormInterface
{
DialogResult ShowDialog();
}
public class FormInterface<TObject> : SubForm, IFormInterface where TObject : class
{ }
public partial class Form1 : Form
{
private FormController<Parent> _formController;
public Form1()
{
InitializeComponent();
_formController = new FormController<Parent>(this.btnShowSubForm, new DataController<Parent>(new MeContext()));
}
}
public class FormController<TObject> where TObject : class
{
private DataController<TObject> _dataController;
public FormController(Button btn, DataController<TObject> dataController)
{
_dataController = dataController;
btn.Click += new EventHandler(btnClick);
}
private void btnClick(object sender, EventArgs e)
{
showSubForm("Something");
}
public void showSubForm(string className)
{
//I'm still stuck here because I have to tell the interface the Name of the Class "Child", I want to pass <TObject> here.
// Want to pass in the true Class name to FormController from the MainForm only, and from then on, it generic.
IFormInterface f2 = new FormInterface<Child>();
f2.ShowDialog();
}
}
class MeContext : DbContext
{
public MeContext() : base(@"data source=HAZEL-PC\HAZEL_SQL;initial catalog=MCL;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework") { }
public DbSet<Parent> Child { get; set; }
}
public class DataController<TObject> where TObject : class
{
protected DbContext _context;
public DataController(DbContext context)
{
_context = context;
}
}
public class Parent
{
string Name { get; set; }
bool HasChildren { get; set; }
int Age { get; set; }
}
public class Child
{
string Name { get; set; }
int Age { get; set; }
}