// 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 ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Parser;
namespace ICSharpCode.SharpDevelop.Dom
{
///
/// Observable model for a member.
///
public interface IMemberModel : IEntityModel
{
///
/// Resolves the member in the current compilation.
/// Returns null if the member could not be resolved.
///
new IMember Resolve();
///
/// Resolves the member in the specified compilation.
/// Returns null if the member could not be resolved.
///
new IMember Resolve(ICompilation compilation);
///
/// Gets the unresolved member.
///
IUnresolvedMember UnresolvedMember { get; }
///
/// Gets if the member is virtual. Is true only if the "virtual" modifier was used, but non-virtual
/// members can be overridden, too; if they are abstract or overriding a method.
///
bool IsVirtual { get; }
///
/// Gets whether this member is overriding another member.
///
bool IsOverride { get; }
///
/// Gets if the member can be overridden. Returns true when the member is "abstract", "virtual" or "override" but not "sealed".
///
bool IsOverridable { get; }
}
}