diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index 61c82c065f..ab3f64091e 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -98,7 +98,7 @@
-
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs
index ff37a0c698..e9673ee5e5 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeFunction.cs
@@ -52,7 +52,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public virtual CodeElements Parameters {
- get { return new CodeParameters(method.Parameters); }
+ get { return new CodeParameters(method.ProjectContent, method.Parameters); }
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs
index 8cc7370954..b571566266 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameter.cs
@@ -8,10 +8,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeParameter : CodeElement
{
+ IProjectContent projectContent;
IParameter parameter;
- public CodeParameter(IParameter parameter)
+ public CodeParameter(IProjectContent projectContent, IParameter parameter)
{
+ this.projectContent = projectContent;
this.parameter = parameter;
}
@@ -22,5 +24,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public override string Name {
get { return parameter.Name; }
}
+
+ public virtual CodeTypeRef2 Type {
+ get { return new CodeTypeRef2(projectContent, null, parameter.ReturnType); }
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs
similarity index 72%
rename from src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs
rename to src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs
index 72a97e700a..97d7de2a22 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeMethodOrPropertyParameters.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeParameters.cs
@@ -9,8 +9,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{
public class CodeParameters : CodeElementsList
{
- public CodeParameters(IEnumerable parameters)
+ IProjectContent projectContent;
+
+ public CodeParameters(IProjectContent projectContent, IEnumerable parameters)
{
+ this.projectContent = projectContent;
AddParameters(parameters);
}
@@ -23,7 +26,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
void AddParameters(IParameter parameter)
{
- AddCodeElement(new CodeParameter(parameter));
+ AddCodeElement(new CodeParameter(projectContent, parameter));
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs
index 0f3ea681ee..30b4d41513 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeProperty2.cs
@@ -32,7 +32,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
}
public CodeElements Parameters {
- get { return new CodeParameters(Property.Parameters); }
+ get { return new CodeParameters(null, Property.Parameters); }
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs
index 6b444cf164..226bd39341 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeFunctionTests.cs
@@ -54,6 +54,11 @@ namespace PackageManagement.Tests.EnvDTE
helper.AddParameter(name);
}
+ void AddParameterToMethod(string type, string name)
+ {
+ helper.AddParameter(type, name);
+ }
+
[Test]
public void Access_PublicFunction_ReturnsPublic()
{
@@ -170,5 +175,27 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual("test", parameter.Name);
}
+
+ [Test]
+ public void Parameters_MethodHasOneStringParameter_ReturnsOneCodeParameterWithStringType()
+ {
+ AddParameterToMethod("System.String", "test");
+ CreatePublicFunction("MyClass.MyMethod");
+
+ CodeParameter parameter = codeFunction.Parameters.FirstCodeParameterOrDefault();
+
+ Assert.AreEqual("System.String", parameter.Type.AsFullName);
+ }
+
+ [Test]
+ public void Parameters_MethodHasOneStringParameter_CreatesCodeParameterWithProjectContent()
+ {
+ AddParameterToMethod("System.String", "test");
+ CreatePublicFunction("MyClass.MyMethod");
+
+ CodeParameter parameter = codeFunction.Parameters.FirstCodeParameterOrDefault();
+
+ Assert.AreEqual("string", parameter.Type.AsString);
+ }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs
index b4734167d9..5fd217f712 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeParameterTests.cs
@@ -14,7 +14,7 @@ namespace PackageManagement.Tests.EnvDTE
void CreateParameter()
{
- parameter = new CodeParameter(null);
+ parameter = new CodeParameter(null, null);
}
[Test]
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs
index 68e00cdb3b..67fa616555 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/MethodOrPropertyHelper.cs
@@ -13,9 +13,20 @@ namespace PackageManagement.Tests.Helpers
public List parameters = new List();
public void AddParameter(string name)
+ {
+ AddParameter("System.String", name);
+ }
+
+ public void AddParameter(string type, string name)
{
IParameter parameter = MockRepository.GenerateStub();
parameter.Stub(p => p.Name).Return(name);
+
+ var returnTypeHelper = new ReturnTypeHelper();
+ returnTypeHelper.CreateReturnType("System.String");
+ returnTypeHelper.AddDotNetName("System.String");
+ parameter.ReturnType = returnTypeHelper.ReturnType;
+
parameters.Add(parameter);
}
}