Browse Source

fix bug in XamlResolver

pull/48/head
Siegfried Pammer 12 years ago
parent
commit
b6a464c2a2
  1. 16
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs
  2. 7
      src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlUnresolvedFile.cs
  3. 2
      src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs
  4. 47
      src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs
  5. 2
      src/Main/SharpDevelop/SharpDevelop.csproj

16
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlResolver.cs

@ -3,19 +3,10 @@ @@ -3,19 +3,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.Remoting.Lifetime;
using System.Threading;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.Editor;
using ICSharpCode.NRefactory.Semantics;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.NRefactory.Xml;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.XmlEditor;
namespace ICSharpCode.XamlBinding
{
@ -37,12 +28,7 @@ namespace ICSharpCode.XamlBinding @@ -37,12 +28,7 @@ namespace ICSharpCode.XamlBinding
{
string prefix, memberName;
string name = ParseName(expression, out prefix, out memberName);
string namespaceUrl;
if (prefix == "")
namespaceUrl = context.ActiveElement.Namespace;
else
namespaceUrl = context.ActiveElement.ResolvePrefix(prefix);
string namespaceUrl = context.ActiveElement.LookupNamespace(prefix);
if (string.IsNullOrEmpty(memberName)) {
IType type = ResolveType(namespaceUrl, context.ActiveElement.LocalName);
IMember member = type.GetMembers(m => m.Name == name).FirstOrDefault();

7
src/AddIns/BackendBindings/XamlBinding/XamlBinding/XamlUnresolvedFile.cs

@ -111,14 +111,17 @@ namespace ICSharpCode.XamlBinding @@ -111,14 +111,17 @@ namespace ICSharpCode.XamlBinding
public static ITypeReference CreateTypeReference(string @namespace, string localName)
{
if (@namespace.StartsWith("clr-namespace:", StringComparison.OrdinalIgnoreCase)) {
if (@namespace == null)
return new UnknownType(null, localName);
if (@namespace.StartsWith("clr-namespace:", StringComparison.OrdinalIgnoreCase))
return CreateClrNamespaceTypeReference(@namespace.Substring("clr-namespace:".Length), localName);
}
return new XamlTypeReference(@namespace, localName);
}
public static ITypeReference CreateClrNamespaceTypeReference(string @namespace, string localName)
{
if (@namespace == null)
return new UnknownType(null, localName);
int assemblyNameIndex = @namespace.IndexOf(";assembly=", StringComparison.OrdinalIgnoreCase);
IAssemblyReference asm = DefaultAssemblyReference.CurrentAssembly;
if (assemblyNameIndex > -1) {

2
src/Main/Base/Project/Dom/ClassBrowser/WorkspaceTreeNode.cs

@ -4,10 +4,10 @@ @@ -4,10 +4,10 @@
using System;
using System.Collections.Generic;
using System.Windows.Media;
using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.TreeView;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{

47
src/Main/SharpDevelop/Dom/ClassBrowser/ClassBrowserTreeNodesFactory.cs

@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.Windows.Media;
using ICSharpCode.NRefactory.Utils;
using ICSharpCode.TreeView;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom.ClassBrowser
{
public class ClassBrowserTreeNodesFactory : ITreeNodeFactory
{
public Type GetSupportedType(object model)
{
if (model is ISolution)
return typeof(ISolution);
if (model is IProject)
return typeof(IProject);
if (model is INamespaceModel)
return typeof(INamespaceModel);
if (model is ITypeDefinitionModel)
return typeof(ITypeDefinitionModel);
if (model is IMemberModel)
return typeof(IMemberModel);
return null;
}
public SharpTreeNode CreateTreeNode(object model)
{
if (model is ISolution)
return new SolutionTreeNode((ISolution)model);
if (model is IProject)
return new ProjectTreeNode((IProject)model);
if (model is INamespaceModel)
return new NamespaceTreeNode((INamespaceModel)model);
if (model is ITypeDefinitionModel)
return new TypeDefinitionTreeNode((ITypeDefinitionModel)model);
if (model is IMemberModel)
return new MemberTreeNode((IMemberModel)model);
return null;
}
}
}

2
src/Main/SharpDevelop/SharpDevelop.csproj

@ -107,7 +107,7 @@ @@ -107,7 +107,7 @@
<Link>Project\Build\MSBuildEngine\ExtendedBinaryReader.cs</Link>
</Compile>
<Compile Include="Dom\ClassBrowser\ClassBrowserPad.cs" />
<Compile Include="Dom\ClassBrowser\ClassBrowserTreeNodesFactory.cs" />
<Compile Include="Dom\ClassBrowser\WorkspaceTreeNodesFactory.cs" />
<Compile Include="Dom\ModelFactory.cs" />
<Compile Include="Dom\MemberModel.cs" />
<Compile Include="Dom\NamespaceModel.cs" />

Loading…
Cancel
Save