better?
using System;
using System.Collections.Generic;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.GraphicsInterface;
using Autodesk.AutoCAD.Geometry;
namespace ExecMethod
{
public class TransientEntityCollection : List<TransientEntity>, IDisposable
{
public void AddTransients(TransientManager manager,
TransientDrawingMode drawingMode,
int subDrawingMode)
{
this.ForEach(Item =>
Item.AddTransient(manager,drawingMode,subDrawingMode));
}
public void AddTransients(TransientManager manager,
TransientDrawingMode drawingMode,
int subDrawingMode,
IntegerCollection viewportNumbers)
{
this.ForEach(Item =>
Item.AddTransient(manager, drawingMode, subDrawingMode, viewportNumbers));
}
public void Dispose()
{
this.ForEach(Item => Item.Dispose());
this.Clear();
}
public void Dispose(int item)
{
this[item].Dispose();
this.RemoveAt(item);
}
public void EraseTransients(TransientManager manager)
{
this.ForEach(Item =>
Item.EraseTransient(manager));
}
public void EraseTransients(TransientManager manager, bool dispose)
{
this.ForEach(Item =>
Item.EraseTransient(manager,dispose));
}
}
public class TransientEntity : IDisposable
{
// Fields
protected bool m_isTransient;
protected Entity m_entity;
protected IntegerCollection m_viewportNumbers;
// Methods
private TransientEntity()
{
}
public TransientEntity(Entity entity)
{
if (entity == null)
throw new ArgumentNullException();
this.m_viewportNumbers = new IntegerCollection();
this.m_entity = entity;
m_isTransient = false;
}
public TransientEntity(Entity entity, IntegerCollection viewportNumbers)
{
if (entity == null)
throw new ArgumentNullException();
this.m_viewportNumbers = viewportNumbers;
this.m_entity = entity;
m_isTransient = false;
}
public virtual void AddTransient(TransientManager manager,
TransientDrawingMode drawingMode,
int subDrawingMode)
{
if (!this.m_entity.IsDisposed)
{
manager.AddTransient(this.m_entity, drawingMode,
subDrawingMode, this.m_viewportNumbers);
m_isTransient = true;
}
}
public virtual void AddTransient(TransientManager manager,
TransientDrawingMode drawingMode,
int subDrawingMode,
IntegerCollection viewportNumbers)
{
if (!this.m_entity.IsDisposed)
{
manager.AddTransient(this.m_entity, drawingMode,
subDrawingMode, viewportNumbers);
m_isTransient = true;
}
}
public void Dispose()
{
this.m_entity.Dispose();
}
public virtual void EraseTransient(TransientManager manager)
{
manager.EraseTransient(this.m_entity, this.m_viewportNumbers);
m_isTransient = false;
}
public virtual void EraseTransient(TransientManager manager, bool dispose)
{
this.EraseTransient(manager);
if (dispose)
this.m_entity.Dispose();
}
// Properties
public Entity Entity
{
get
{
return this.m_entity;
}
}
public bool IsDisposed
{
get
{
return this.m_entity.IsDisposed;
}
}
public bool IsTransient
{
get
{
return this.m_isTransient;
}
set
{
this.m_isTransient = value;
}
}
public bool IsResident
{
get
{
if (this.m_entity == null)
return false;
else if (this.IsDisposed)
return false;
return this.m_entity.ObjectId.IsResident;
}
}
public ObjectId ObjectId
{
get
{
if (this.m_entity == null)
return ObjectId.Null;
else if (this.IsDisposed)
return ObjectId.Null;
return this.m_entity.ObjectId;
}
}
public IntegerCollection ViewportNumbers
{
get
{
return this.m_viewportNumbers;
}
set
{
this.m_viewportNumbers = value;
}
}
}
}