diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs index 973dbd97c7..274d3b5ed8 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertCtorDialog.xaml.cs @@ -63,9 +63,14 @@ namespace CSharpBinding.Refactoring var typeResolveContext = refactoringContext.GetTypeResolveContext(); if (typeResolveContext == null) { + parameterList = EmptyList.Instance; return; } var resolvedCurrent = typeResolveContext.CurrentTypeDefinition; + if (resolvedCurrent == null) { + parameterList = EmptyList.Instance; + return; + } parameterList = CreateCtorParams(resolvedCurrent).ToList(); this.varList.ItemsSource = parameterList; @@ -74,23 +79,17 @@ namespace CSharpBinding.Refactoring Visibility = System.Windows.Visibility.Visible; } - IEnumerable CreateCtorParams(IType sourceType) + IEnumerable CreateCtorParams(ITypeDefinition sourceType) { int i = 0; - foreach (var f in sourceType.GetFields().Where(field => !field.IsConst - && field.IsStatic == sourceType.GetDefinition().IsStatic - && field.DeclaringType.FullName == sourceType.FullName - && field.ReturnType != null)) { + foreach (var f in sourceType.Fields.Where(f => !f.IsStatic)) { yield return new PropertyOrFieldWrapper(f) { Index = i }; i++; } - foreach (var p in sourceType.GetProperties().Where(prop => prop.CanSet && !prop.IsIndexer - && prop.IsAutoImplemented() - && prop.IsStatic == sourceType.GetDefinition().IsStatic - && prop.DeclaringType.FullName == sourceType.FullName - && prop.ReturnType != null)) { + foreach (var p in sourceType.Properties.Where(prop => !prop.IsStatic && prop.CanSet + && !prop.IsIndexer && prop.IsAutoImplemented())) { yield return new PropertyOrFieldWrapper(p) { Index = i }; i++; }