Индексируемые свойства в C#
Июл 3rd, 2009 by Umax
К сожалению в C# нет простой возможности сделать индексируемые свойства. Чтобы сделать такие свойства – нужно вводить дополнительную прослойку
К тому же, пока нашел вменяемый пример – делал через методы, а их использование довольно ощутимо усложняет жизнь. Сегодня, часа пол назад, нашел и разобрался. Как видно оно сделано через одно место, и работать с этим не удобно, надеюсь что в .Net Framework 4.0 сделают нормальные индексированные свойства, а то это жесть, очень не удобно.
И собственно то что я искал, нашел и доделал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
MyClass _property = new MyClass();
for (int i = 0; i < 5; i++)
{
_property.Property[i] = i;
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(_property.Property[i].ToString());
}
Console.ReadKey();
}
public class MyClass
{
MyClassProperty _property;
public MyClass()
{
_property = new MyClassProperty(5);
}
public MyClassProperty Property
{
get
{
return _property;
}
}
}
public class MyClassProperty
{
private int[] _content;
public int this[int index]
{
set { _content[index] = value; }
get { return _content[index]; }
}
public MyClassProperty(int Count)
{
_content = new int[Count];
}
}
}
}