#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
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.
 
 
 
 
 
 

94 lines
2.0 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.ComponentModel;
using System.Linq;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
namespace CSharpBinding.Refactoring
{
public class FieldWrapper : INotifyPropertyChanged
{
/// <summary>
/// Underlying member. Always IField or IProperty.
/// </summary>
readonly IField field;
private string text;
public IField Field {
get { return field; }
}
public FieldWrapper(IField member)
{
if (member == null)
throw new ArgumentNullException("member");
this.field = member;
addSetter = true;
IAmbience ambience = AmbienceService.GetCurrentAmbience();
ambience.ConversionFlags |=
ConversionFlags.ShowReturnType
| ConversionFlags.ShowModifiers
| ConversionFlags.ShowAccessibility;
this.text = ambience.ConvertEntity(member);
}
public string MemberName {
get { return field.Name; }
}
string propertyName;
public string PropertyName {
get {
if (propertyName == null)
propertyName = ToPropertyName(this.MemberName);
return propertyName;
}
}
public IType Type {
get { return field.ReturnType; }
}
public int Index { get; set; }
public string Text {
get { return text; }
}
bool addSetter;
public bool AddSetter {
get { return addSetter; }
set {
addSetter = value;
}
}
public bool IsSetable {
get {
return !field.IsReadOnly && !field.IsConst;
}
}
static string ToPropertyName(string memberName)
{
if (string.IsNullOrEmpty(memberName))
return memberName;
return char.ToUpper(memberName[0]) + memberName.Substring(1);
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string property)
{
if (PropertyChanged != null) {
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
}