You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.6 KiB
70 lines
1.6 KiB
// 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.Linq; |
|
using ICSharpCode.NRefactory.Semantics; |
|
using ICSharpCode.NRefactory.TypeSystem; |
|
using ICSharpCode.SharpDevelop.Dom; |
|
|
|
namespace ICSharpCode.PackageManagement.EnvDTE |
|
{ |
|
public class CodeAttribute : CodeElement, global::EnvDTE.CodeAttribute |
|
{ |
|
protected readonly IAttribute attribute; |
|
const string AttributeEndName = "Attribute"; |
|
|
|
public CodeAttribute() |
|
{ |
|
} |
|
|
|
public CodeAttribute(CodeModelContext context, IAttribute attribute) |
|
: base(context) |
|
{ |
|
this.attribute = attribute; |
|
} |
|
|
|
public override global::EnvDTE.vsCMElement Kind { |
|
get { return global::EnvDTE.vsCMElement.vsCMElementAttribute; } |
|
} |
|
|
|
public override string Name { |
|
get { return GetShortName(attribute.AttributeType.Name); } |
|
} |
|
|
|
string GetShortName(string name) |
|
{ |
|
if (name.EndsWith(AttributeEndName)) { |
|
return name.Substring(0, name.Length - AttributeEndName.Length); |
|
} |
|
return name; |
|
} |
|
|
|
public virtual string FullName { |
|
get { return attribute.AttributeType.FullName; } |
|
} |
|
|
|
public virtual string Value { |
|
get { return GetValue(); } |
|
set { } |
|
} |
|
|
|
string GetValue() |
|
{ |
|
return String.Join(", ", GetArgumentValues()); |
|
} |
|
|
|
string[] GetArgumentValues() |
|
{ |
|
return attribute |
|
.PositionalArguments |
|
.Select(arg => GetArgumentValue(arg)) |
|
.ToArray(); |
|
} |
|
|
|
string GetArgumentValue(ResolveResult argument) |
|
{ |
|
return new CodeAttributeArgument(String.Empty, argument).Value; |
|
} |
|
} |
|
}
|
|
|