// 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;
namespace ICSharpCode.SharpDevelop.Dom
{
public interface IMember : IEntity, ICloneable
{
///
/// Declaration region of the member (without body!)
///
DomRegion Region {
get;
}
///
/// Gets/Sets the declaring type reference (declaring type incl. type arguments).
/// Never returns null.
/// If the property is set to null (e.g. when this is not a specialized member),
/// it should return the default type reference to the .
///
IReturnType DeclaringTypeReference {
get;
set;
}
///
/// Gets the generic member this member is based on.
/// Returns null if this is not a specialized member.
/// Specialized members are the result of overload resolution with type substitution.
///
IMember GenericMember {
get;
}
///
/// Creates a copy of this member with its GenericMember property set to this member.
/// Use this method to create copies of a member that should be regarded as the "same member"
/// for refactoring purposes.
///
IMember CreateSpecializedMember();
IReturnType ReturnType {
get;
set;
}
IList InterfaceImplementations {
get;
}
}
}