Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/30/15 15:12:34 (9 years ago)
Author:
mkommend
Message:

#2521: Adapted type discovery and type selector to allow the creation of generic programmable problems.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ProblemRefactoring/HeuristicLab.Core.Views/3.3/TypeSelector.cs

    r12722 r13422  
    257257    }
    258258
     259    private Type[] genericTypeArguments = null;
    259260    protected virtual void UpdateTypeParameters() {
    260261      typeParametersListView.Items.Clear();
     
    262263        typeParametersGroupBox.Enabled = false;
    263264        typeParametersSplitContainer.Panel2Collapsed = true;
     265        genericTypeArguments = null;
    264266      } else {
    265267        typeParametersGroupBox.Enabled = true;
     
    267269        setTypeParameterButton.Enabled = false;
    268270
    269         foreach (Type param in SelectedType.GetGenericArguments()) {
     271
     272        genericTypeArguments = SelectedType.GetGenericArguments();
     273
     274        foreach (Type param in genericTypeArguments) {
    270275          if (param.IsGenericParameter) {
    271276            ListViewItem item = new ListViewItem();
     
    301306      if (typeSelectorDialog.ShowDialog(this) == DialogResult.OK) {
    302307        Type selected = typeSelectorDialog.TypeSelector.SelectedType;
    303         Type[] parameters = SelectedType.GetGenericArguments();
    304         parameters[param.GenericParameterPosition] = selected;
    305         SelectedType = SelectedType.GetGenericTypeDefinition().MakeGenericType(parameters);
     308        genericTypeArguments[param.GenericParameterPosition] = selected;
     309        if (genericTypeArguments.All(p => !p.IsGenericParameter))
     310          SelectedType = SelectedType.GetGenericTypeDefinition().MakeGenericType(genericTypeArguments);
    306311
    307312        typeParametersListView.SelectedItems[0].Text = param.Name + ": " + selected.GetPrettyName();
Note: See TracChangeset for help on using the changeset viewer.