Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / System / Windows / Media / Animation / Generated / Point3DKeyFrameCollection.cs / 1 / Point3DKeyFrameCollection.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// This file was generated, please do not edit it directly.
//
// Please see http://wiki/default.aspx/Microsoft.Projects.Avalon/MilCodeGen.html for more information.
//
//---------------------------------------------------------------------------
using MS.Internal;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Windows.Media.Animation;
using System.Windows.Media.Media3D;
namespace System.Windows.Media.Animation
{
///
/// This collection is used in conjunction with a KeyFramePoint3DAnimation
/// to animate a Point3D property value along a set of key frames.
///
public class Point3DKeyFrameCollection : Freezable, IList
{
#region Data
private List _keyFrames;
private static Point3DKeyFrameCollection s_emptyCollection;
#endregion
#region Constructors
///
/// Creates a new Point3DKeyFrameCollection.
///
public Point3DKeyFrameCollection()
: base()
{
_keyFrames = new List< Point3DKeyFrame>(2);
}
#endregion
#region Static Methods
///
/// An empty Point3DKeyFrameCollection.
///
public static Point3DKeyFrameCollection Empty
{
get
{
if (s_emptyCollection == null)
{
Point3DKeyFrameCollection emptyCollection = new Point3DKeyFrameCollection();
emptyCollection._keyFrames = new List< Point3DKeyFrame>(0);
emptyCollection.Freeze();
s_emptyCollection = emptyCollection;
}
return s_emptyCollection;
}
}
#endregion
#region Freezable
///
/// Creates a freezable copy of this Point3DKeyFrameCollection.
///
/// The copy
public new Point3DKeyFrameCollection Clone()
{
return (Point3DKeyFrameCollection)base.Clone();
}
///
/// Implementation of Freezable.CreateInstanceCore .
///
/// The new Freezable.
protected override Freezable CreateInstanceCore()
{
return new Point3DKeyFrameCollection();
}
///
/// Implementation of Freezable.CloneCore .
///
protected override void CloneCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.CloneCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].Clone();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
/// Implementation of Freezable.CloneCurrentValueCore .
///
protected override void CloneCurrentValueCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.CloneCurrentValueCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].CloneCurrentValue();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
/// Implementation of Freezable.GetAsFrozenCore .
///
protected override void GetAsFrozenCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.GetAsFrozenCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].GetAsFrozen();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
/// Implementation of Freezable.GetCurrentValueAsFrozenCore .
///
protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.GetCurrentValueAsFrozenCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].GetCurrentValueAsFrozen();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
///
///
protected override bool FreezeCore(bool isChecking)
{
bool canFreeze = base.FreezeCore(isChecking);
for (int i = 0; i < _keyFrames.Count && canFreeze; i++)
{
canFreeze &= Freezable.Freeze(_keyFrames[i], isChecking);
}
return canFreeze;
}
#endregion
#region IEnumerable
///
/// Returns an enumerator of the Point3DKeyFrames in the collection.
///
public IEnumerator GetEnumerator()
{
ReadPreamble();
return _keyFrames.GetEnumerator();
}
#endregion
#region ICollection
///
/// Returns the number of Point3DKeyFrames in the collection.
///
public int Count
{
get
{
ReadPreamble();
return _keyFrames.Count;
}
}
///
/// See ICollection.IsSynchronized .
///
public bool IsSynchronized
{
get
{
ReadPreamble();
return (IsFrozen || Dispatcher != null);
}
}
///
/// See ICollection.SyncRoot .
///
public object SyncRoot
{
get
{
ReadPreamble();
return ((ICollection)_keyFrames).SyncRoot;
}
}
///
/// Copies all of the Point3DKeyFrames in the collection to an
/// array.
///
void ICollection.CopyTo(Array array, int index)
{
ReadPreamble();
((ICollection)_keyFrames).CopyTo(array, index);
}
///
/// Copies all of the Point3DKeyFrames in the collection to an
/// array of Point3DKeyFrames.
///
public void CopyTo(Point3DKeyFrame[] array, int index)
{
ReadPreamble();
_keyFrames.CopyTo(array, index);
}
#endregion
#region IList
///
/// Adds a Point3DKeyFrame to the collection.
///
int IList.Add(object keyFrame)
{
return Add((Point3DKeyFrame)keyFrame);
}
///
/// Adds a Point3DKeyFrame to the collection.
///
public int Add(Point3DKeyFrame keyFrame)
{
if (keyFrame == null)
{
throw new ArgumentNullException("keyFrame");
}
WritePreamble();
OnFreezablePropertyChanged(null, keyFrame);
_keyFrames.Add(keyFrame);
WritePostscript();
return _keyFrames.Count - 1;
}
///
/// Removes all Point3DKeyFrames from the collection.
///
public void Clear()
{
WritePreamble();
if (_keyFrames.Count > 0)
{
for (int i = 0; i < _keyFrames.Count; i++)
{
OnFreezablePropertyChanged(_keyFrames[i], null);
}
_keyFrames.Clear();
WritePostscript();
}
}
///
/// Returns true of the collection contains the given Point3DKeyFrame.
///
bool IList.Contains(object keyFrame)
{
return Contains((Point3DKeyFrame)keyFrame);
}
///
/// Returns true of the collection contains the given Point3DKeyFrame.
///
public bool Contains(Point3DKeyFrame keyFrame)
{
ReadPreamble();
return _keyFrames.Contains(keyFrame);
}
///
/// Returns the index of a given Point3DKeyFrame in the collection.
///
int IList.IndexOf(object keyFrame)
{
return IndexOf((Point3DKeyFrame)keyFrame);
}
///
/// Returns the index of a given Point3DKeyFrame in the collection.
///
public int IndexOf(Point3DKeyFrame keyFrame)
{
ReadPreamble();
return _keyFrames.IndexOf(keyFrame);
}
///
/// Inserts a Point3DKeyFrame into a specific location in the collection.
///
void IList.Insert(int index, object keyFrame)
{
Insert(index, (Point3DKeyFrame)keyFrame);
}
///
/// Inserts a Point3DKeyFrame into a specific location in the collection.
///
public void Insert(int index, Point3DKeyFrame keyFrame)
{
if (keyFrame == null)
{
throw new ArgumentNullException("keyFrame");
}
WritePreamble();
OnFreezablePropertyChanged(null, keyFrame);
_keyFrames.Insert(index, keyFrame);
WritePostscript();
}
///
/// Returns true if the collection is frozen.
///
public bool IsFixedSize
{
get
{
ReadPreamble();
return IsFrozen;
}
}
///
/// Returns true if the collection is frozen.
///
public bool IsReadOnly
{
get
{
ReadPreamble();
return IsFrozen;
}
}
///
/// Removes a Point3DKeyFrame from the collection.
///
void IList.Remove(object keyFrame)
{
Remove((Point3DKeyFrame)keyFrame);
}
///
/// Removes a Point3DKeyFrame from the collection.
///
public void Remove(Point3DKeyFrame keyFrame)
{
WritePreamble();
if (_keyFrames.Contains(keyFrame))
{
OnFreezablePropertyChanged(keyFrame, null);
_keyFrames.Remove(keyFrame);
WritePostscript();
}
}
///
/// Removes the Point3DKeyFrame at the specified index from the collection.
///
public void RemoveAt(int index)
{
WritePreamble();
OnFreezablePropertyChanged(_keyFrames[index], null);
_keyFrames.RemoveAt(index);
WritePostscript();
}
///
/// Gets or sets the Point3DKeyFrame at a given index.
///
object IList.this[int index]
{
get
{
return this[index];
}
set
{
this[index] = (Point3DKeyFrame)value;
}
}
///
/// Gets or sets the Point3DKeyFrame at a given index.
///
public Point3DKeyFrame this[int index]
{
get
{
ReadPreamble();
return _keyFrames[index];
}
set
{
if (value == null)
{
throw new ArgumentNullException(String.Format(CultureInfo.InvariantCulture, "Point3DKeyFrameCollection[{0}]", index));
}
WritePreamble();
if (value != _keyFrames[index])
{
OnFreezablePropertyChanged(_keyFrames[index], value);
_keyFrames[index] = value;
Debug.Assert(_keyFrames[index] != null);
WritePostscript();
}
}
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// This file was generated, please do not edit it directly.
//
// Please see http://wiki/default.aspx/Microsoft.Projects.Avalon/MilCodeGen.html for more information.
//
//---------------------------------------------------------------------------
using MS.Internal;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Windows.Media.Animation;
using System.Windows.Media.Media3D;
namespace System.Windows.Media.Animation
{
///
/// This collection is used in conjunction with a KeyFramePoint3DAnimation
/// to animate a Point3D property value along a set of key frames.
///
public class Point3DKeyFrameCollection : Freezable, IList
{
#region Data
private List _keyFrames;
private static Point3DKeyFrameCollection s_emptyCollection;
#endregion
#region Constructors
///
/// Creates a new Point3DKeyFrameCollection.
///
public Point3DKeyFrameCollection()
: base()
{
_keyFrames = new List< Point3DKeyFrame>(2);
}
#endregion
#region Static Methods
///
/// An empty Point3DKeyFrameCollection.
///
public static Point3DKeyFrameCollection Empty
{
get
{
if (s_emptyCollection == null)
{
Point3DKeyFrameCollection emptyCollection = new Point3DKeyFrameCollection();
emptyCollection._keyFrames = new List< Point3DKeyFrame>(0);
emptyCollection.Freeze();
s_emptyCollection = emptyCollection;
}
return s_emptyCollection;
}
}
#endregion
#region Freezable
///
/// Creates a freezable copy of this Point3DKeyFrameCollection.
///
/// The copy
public new Point3DKeyFrameCollection Clone()
{
return (Point3DKeyFrameCollection)base.Clone();
}
///
/// Implementation of Freezable.CreateInstanceCore .
///
/// The new Freezable.
protected override Freezable CreateInstanceCore()
{
return new Point3DKeyFrameCollection();
}
///
/// Implementation of Freezable.CloneCore .
///
protected override void CloneCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.CloneCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].Clone();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
/// Implementation of Freezable.CloneCurrentValueCore .
///
protected override void CloneCurrentValueCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.CloneCurrentValueCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].CloneCurrentValue();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
/// Implementation of Freezable.GetAsFrozenCore .
///
protected override void GetAsFrozenCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.GetAsFrozenCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].GetAsFrozen();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
/// Implementation of Freezable.GetCurrentValueAsFrozenCore .
///
protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable)
{
Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable;
base.GetCurrentValueAsFrozenCore(sourceFreezable);
int count = sourceCollection._keyFrames.Count;
_keyFrames = new List< Point3DKeyFrame>(count);
for (int i = 0; i < count; i++)
{
Point3DKeyFrame keyFrame = (Point3DKeyFrame)sourceCollection._keyFrames[i].GetCurrentValueAsFrozen();
_keyFrames.Add(keyFrame);
OnFreezablePropertyChanged(null, keyFrame);
}
}
///
///
///
protected override bool FreezeCore(bool isChecking)
{
bool canFreeze = base.FreezeCore(isChecking);
for (int i = 0; i < _keyFrames.Count && canFreeze; i++)
{
canFreeze &= Freezable.Freeze(_keyFrames[i], isChecking);
}
return canFreeze;
}
#endregion
#region IEnumerable
///
/// Returns an enumerator of the Point3DKeyFrames in the collection.
///
public IEnumerator GetEnumerator()
{
ReadPreamble();
return _keyFrames.GetEnumerator();
}
#endregion
#region ICollection
///
/// Returns the number of Point3DKeyFrames in the collection.
///
public int Count
{
get
{
ReadPreamble();
return _keyFrames.Count;
}
}
///
/// See ICollection.IsSynchronized .
///
public bool IsSynchronized
{
get
{
ReadPreamble();
return (IsFrozen || Dispatcher != null);
}
}
///
/// See ICollection.SyncRoot .
///
public object SyncRoot
{
get
{
ReadPreamble();
return ((ICollection)_keyFrames).SyncRoot;
}
}
///
/// Copies all of the Point3DKeyFrames in the collection to an
/// array.
///
void ICollection.CopyTo(Array array, int index)
{
ReadPreamble();
((ICollection)_keyFrames).CopyTo(array, index);
}
///
/// Copies all of the Point3DKeyFrames in the collection to an
/// array of Point3DKeyFrames.
///
public void CopyTo(Point3DKeyFrame[] array, int index)
{
ReadPreamble();
_keyFrames.CopyTo(array, index);
}
#endregion
#region IList
///
/// Adds a Point3DKeyFrame to the collection.
///
int IList.Add(object keyFrame)
{
return Add((Point3DKeyFrame)keyFrame);
}
///
/// Adds a Point3DKeyFrame to the collection.
///
public int Add(Point3DKeyFrame keyFrame)
{
if (keyFrame == null)
{
throw new ArgumentNullException("keyFrame");
}
WritePreamble();
OnFreezablePropertyChanged(null, keyFrame);
_keyFrames.Add(keyFrame);
WritePostscript();
return _keyFrames.Count - 1;
}
///
/// Removes all Point3DKeyFrames from the collection.
///
public void Clear()
{
WritePreamble();
if (_keyFrames.Count > 0)
{
for (int i = 0; i < _keyFrames.Count; i++)
{
OnFreezablePropertyChanged(_keyFrames[i], null);
}
_keyFrames.Clear();
WritePostscript();
}
}
///
/// Returns true of the collection contains the given Point3DKeyFrame.
///
bool IList.Contains(object keyFrame)
{
return Contains((Point3DKeyFrame)keyFrame);
}
///
/// Returns true of the collection contains the given Point3DKeyFrame.
///
public bool Contains(Point3DKeyFrame keyFrame)
{
ReadPreamble();
return _keyFrames.Contains(keyFrame);
}
///
/// Returns the index of a given Point3DKeyFrame in the collection.
///
int IList.IndexOf(object keyFrame)
{
return IndexOf((Point3DKeyFrame)keyFrame);
}
///
/// Returns the index of a given Point3DKeyFrame in the collection.
///
public int IndexOf(Point3DKeyFrame keyFrame)
{
ReadPreamble();
return _keyFrames.IndexOf(keyFrame);
}
///
/// Inserts a Point3DKeyFrame into a specific location in the collection.
///
void IList.Insert(int index, object keyFrame)
{
Insert(index, (Point3DKeyFrame)keyFrame);
}
///
/// Inserts a Point3DKeyFrame into a specific location in the collection.
///
public void Insert(int index, Point3DKeyFrame keyFrame)
{
if (keyFrame == null)
{
throw new ArgumentNullException("keyFrame");
}
WritePreamble();
OnFreezablePropertyChanged(null, keyFrame);
_keyFrames.Insert(index, keyFrame);
WritePostscript();
}
///
/// Returns true if the collection is frozen.
///
public bool IsFixedSize
{
get
{
ReadPreamble();
return IsFrozen;
}
}
///
/// Returns true if the collection is frozen.
///
public bool IsReadOnly
{
get
{
ReadPreamble();
return IsFrozen;
}
}
///
/// Removes a Point3DKeyFrame from the collection.
///
void IList.Remove(object keyFrame)
{
Remove((Point3DKeyFrame)keyFrame);
}
///
/// Removes a Point3DKeyFrame from the collection.
///
public void Remove(Point3DKeyFrame keyFrame)
{
WritePreamble();
if (_keyFrames.Contains(keyFrame))
{
OnFreezablePropertyChanged(keyFrame, null);
_keyFrames.Remove(keyFrame);
WritePostscript();
}
}
///
/// Removes the Point3DKeyFrame at the specified index from the collection.
///
public void RemoveAt(int index)
{
WritePreamble();
OnFreezablePropertyChanged(_keyFrames[index], null);
_keyFrames.RemoveAt(index);
WritePostscript();
}
///
/// Gets or sets the Point3DKeyFrame at a given index.
///
object IList.this[int index]
{
get
{
return this[index];
}
set
{
this[index] = (Point3DKeyFrame)value;
}
}
///
/// Gets or sets the Point3DKeyFrame at a given index.
///
public Point3DKeyFrame this[int index]
{
get
{
ReadPreamble();
return _keyFrames[index];
}
set
{
if (value == null)
{
throw new ArgumentNullException(String.Format(CultureInfo.InvariantCulture, "Point3DKeyFrameCollection[{0}]", index));
}
WritePreamble();
if (value != _keyFrames[index])
{
OnFreezablePropertyChanged(_keyFrames[index], value);
_keyFrames[index] = value;
Debug.Assert(_keyFrames[index] != null);
WritePostscript();
}
}
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ZipIORawDataFileBlock.cs
- Decimal.cs
- Double.cs
- ControlIdConverter.cs
- EventManager.cs
- MemberPath.cs
- HitTestDrawingContextWalker.cs
- GenericEnumerator.cs
- QilScopedVisitor.cs
- FormClosedEvent.cs
- X509Utils.cs
- DrawListViewSubItemEventArgs.cs
- Stack.cs
- StringResourceManager.cs
- HMACRIPEMD160.cs
- DataRelation.cs
- EpmCustomContentWriterNodeData.cs
- CustomValidator.cs
- HwndHostAutomationPeer.cs
- AutoResetEvent.cs
- ToolStripPanel.cs
- SqlException.cs
- EraserBehavior.cs
- RegexWorker.cs
- DirtyTextRange.cs
- PatternMatchRules.cs
- Scene3D.cs
- CodeDOMProvider.cs
- SettingsContext.cs
- TimersDescriptionAttribute.cs
- XmlSchemaImporter.cs
- InlineCollection.cs
- TableLayoutRowStyleCollection.cs
- DataGridViewLayoutData.cs
- MissingMemberException.cs
- XPathScanner.cs
- Effect.cs
- Matrix.cs
- SamlAuthorityBinding.cs
- ModelPropertyImpl.cs
- CompiledRegexRunner.cs
- RightNameExpirationInfoPair.cs
- WindowInteropHelper.cs
- ServicePointManagerElement.cs
- CorrelationTokenInvalidatedHandler.cs
- JsonFormatReaderGenerator.cs
- LoggedException.cs
- NestedContainer.cs
- SingleTagSectionHandler.cs
- XmlSerializerOperationBehavior.cs
- EncoderParameters.cs
- ResumeStoryboard.cs
- SymmetricAlgorithm.cs
- AuthenticationSection.cs
- AbandonedMutexException.cs
- ObjectSecurity.cs
- TextParagraphProperties.cs
- TextBoxRenderer.cs
- UndirectedGraph.cs
- ConstantCheck.cs
- ProfileGroupSettingsCollection.cs
- DataRelationPropertyDescriptor.cs
- ScheduleChanges.cs
- LinkLabelLinkClickedEvent.cs
- EpmSyndicationContentSerializer.cs
- BuildManager.cs
- ApplicationDirectoryMembershipCondition.cs
- MissingSatelliteAssemblyException.cs
- ConfigXmlText.cs
- SRGSCompiler.cs
- URLAttribute.cs
- SqlBulkCopy.cs
- CustomLineCap.cs
- CodeTypeDelegate.cs
- Domain.cs
- TextHidden.cs
- Exceptions.cs
- PointConverter.cs
- BindingUtils.cs
- grammarelement.cs
- WorkflowRuntimeServiceElement.cs
- TextServicesCompartment.cs
- DBConnection.cs
- ImageFormat.cs
- ModifierKeysValueSerializer.cs
- ExplicitDiscriminatorMap.cs
- XamlParser.cs
- HttpProcessUtility.cs
- WsatEtwTraceListener.cs
- SpeakCompletedEventArgs.cs
- OdbcConnectionStringbuilder.cs
- ChameleonKey.cs
- SystemTcpConnection.cs
- QueryableDataSource.cs
- XmlSchemaElement.cs
- TrackingMemoryStream.cs
- UrlPath.cs
- ClientRuntimeConfig.cs
- HtmlElementErrorEventArgs.cs
- ControlBindingsCollection.cs