// 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 ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.SharpDevelop.Dom
{
///
/// An NRefactory entity as a model.
///
public interface IEntityModel : ISymbolModel
{
///
/// Gets/sets the accessibility of the entity.
///
Accessibility Accessibility { get; }
///
/// Gets whether this entity is static.
/// Returns true if either the 'static' or the 'const' modifier is set.
///
bool IsStatic { get; }
///
/// Returns whether this entity is abstract.
///
/// Static classes also count as abstract classes.
bool IsAbstract { get; }
///
/// Returns whether this entity is sealed.
///
/// Static classes also count as sealed classes.
bool IsSealed { get; }
///
/// Gets whether this member is declared to be shadowing another member with the same name.
/// (C# 'new' keyword)
///
bool IsShadowing { get; }
///
/// Resolves the entity in the current solution snapshot.
/// Returns null if the entity could not be resolved.
///
IEntity Resolve();
///
/// Resolves the entity in the specified solution snapshot.
/// Returns null if the entity could not be resolved.
///
IEntity Resolve(ISolutionSnapshotWithProjectMapping solutionSnapshot);
}
}