Je ne sais pas comment utiliser le "T" et je ne l'ai jamais très bien compris, mais je suis sûr que la réponse résidera dans tout ce qui l'entoure ...Refactorisation: Comment refactoriser avec un type inconnu?
J'ai un énorme interrupteur que tout il ne s'applique un attribut à un objet et ajoutez le contrôle à une collection, Extrait type de> Appliquer Attribute> Ajouter, comme:
1er commutateur
foreach (AdwizaControl control in form.AdwizaControls)
{
Panel panel = new Panel();
int x = 0, y = 0;
switch (control.Type)
{
case ControlType.CheckBox:
AdwizaCheckBox checkbox = (AdwizaCheckBox)control.AdwizaWebControl;
x = checkbox.X;
y = checkbox.Y;
panel.Controls.Add(checkbox);
break;
case ControlType.Bevel:
AdwizaBevel bevel = (AdwizaBevel)control.AdwizaWebControl;
bevel.Width = bevel.W;
bevel.Height = bevel.H;
panel.Controls.Add(bevel);
break;
checkbox.X et checkbox.Y sont des propriétés d'un XML de définition et ici nous réglons le contrôle à cette taille
...
deuxième commutateur (à boucle à travers les contrôles qui sont à l'intérieur d'un composant RadPageView (Telerik)
foreach (RadPageView pageView in multiPage.PageViews)
{
int controlCount = pageView.Controls.Count;
for (int i = 0; i < controlCount; i++)
{
if (pageView.Controls[i].GetType() == typeof(AdwizaControl))
{
switch (((AdwizaControl)pageView.Controls[i]).Type)
{
...
case ControlType.Grid:
AdwizaGrid pageViewGrid = (AdwizaGrid)((AdwizaControl)pageView.Controls[i]).AdwizaWebControl;
pageViewGrid.Attributes.Add(
"style", string.Format("position:absolute;top:{0}px;left:{1}px;", pageViewGrid.Y + increaseY, pageViewGrid.X + increaseX));
pageView.Controls.Add(pageViewGrid);
break;
case ControlType.Hyperlink:
AdwizaHyperlink pageViewHyperlink = (AdwizaHyperlink)((AdwizaControl)pageView.Controls[i]).AdwizaWebControl;
pageViewHyperlink.Attributes.Add(
"style", string.Format("position:absolute;top:{0}px;left:{1}px;", pageViewHyperlink.Y + increaseY, pageViewHyperlink.X + increaseX));
pageView.Controls.Add(pageViewHyperlink);
break;
case ControlType.ImageBox:
AdwizaImageBox pageViewImageBox = (AdwizaImageBox)((AdwizaControl)pageView.Controls[i]).AdwizaWebControl;
pageViewImageBox.Attributes.Add(
"style", string.Format("position:absolute;top:{0}px;left:{1}px;", pageViewImageBox.Y + increaseY, pageViewImageBox.X + increaseX));
pageView.Controls.Add(pageViewImageBox);
break;
case ControlType.Label:
AdwizaLabel pageViewlabel = (AdwizaLabel)((AdwizaControl)pageView.Controls[i]).AdwizaWebControl;
pageViewlabel.Attributes.Add(
"style", string.Format("position:absolute;top:{0}px;left:{1}px;", pageViewlabel.Y + increaseY, pageViewlabel.X + increaseX));
pageView.Controls.Add(pageViewlabel);
break;
case ControlType.Slavebox:
AdwizaSlavebox pageViewSlavebox = (AdwizaSlavebox)((AdwizaControl)pageView.Controls[i]).AdwizaWebControl;
pageViewSlavebox.Attributes.Add(
"style", string.Format("position:absolute;top:{0}px;left:{1}px;", pageViewSlavebox.Y + increaseY, pageViewSlavebox.X + increaseX));
pageView.Controls.Add(pageViewSlavebox);
break;
case ControlType.Repeatbox:
AdwizaRepeatBox pageViewrepeatbox = (AdwizaRepeatBox)((AdwizaControl)pageView.Controls[i]).AdwizaWebControl;
pageViewrepeatbox.Attributes.Add(
"style", string.Format("position:absolute;top:{0}px;left:{1}px;", pageViewrepeatbox.Y + increaseY, pageViewrepeatbox.X + increaseX));
pageView.Controls.Add(pageViewrepeatbox);
break;
il est plus grand que il doit couvrir tous les objets que j'utilise ...
Comment puis-je à cela dans un appel simple? Genre comme:
ApplyPositionAttribute(
((AdwizaControl)pageView.Controls[i]).AdwizaWebControl);
Y at-il un moyen de simplifier cela?
Ajouté L'instruction switch
Il serait également utile de voir l'instruction switch. –
ajouté le code de démarrage du commutateur :) - dang ... Je ne serai jamais comment magique T est et fait: -/ – balexandre
Est-ce que la propriété est la propriété d'attributs de AdwizaWebControl? Si c'est vrai, je ne sais pas pourquoi vous devez lancer la mise en œuvre (AdwizaLabel, AdwizalSlavebox, etc.). Vérifier la réponse modifiée pour le code –