using System;
using System.Linq.Expressions;
using System.Runtime.CompilerServices;
namespace InABox.Core
{
public interface IProperty
{
string Class { get; set; }
Type? ClassType { get; set; }
string Name { get; set; }
string Type { get; set; }
Type PropertyType { get; set; }
string Page { get; set; }
///
/// Whether the property or any parents actually declares an editor.
///
///
/// If false, will be a .
///
bool HasEditor { get; set; }
BaseEditor Editor { get; set; }
long Sequence { get; set; }
string Caption { get; set; }
bool IsCalculated { get; }
bool IsDBColumn { get; }
///
/// An is required if it has the defined on it.
/// If it is part of an , then it is only required if the property on the parent class
/// also has .
///
bool Required { get; set; }
///
/// Null if the is not loggable.
/// An is loggable if it has the defined on it.
/// If it is part of an , then it is only loggable if the property on the parent class
/// also has .
///
LoggablePropertyAttribute? Loggable { get; set; }
IProperty? Parent { get; set; }
bool IsEntityLink { get; set; }
bool IsEnclosedEntity { get; set; }
bool IsParent { get; set; }
Expression Expression();
Func