Проблемы проектирования и реализации Enumerable.AsEnumerable<FarPoint.Win.Spread.Row>

Как я могу сделать возврат типа данных IEnumerable<datatype> если нет AsEnumerable() метод. Например:

FarPointSpread1.ActiveSheet.Rows[e.Row]

не содержит AsEnumerable() так что я не могу этого сделать

FarPointSpread1.ActiveSheet.Rows[e.Row].AsEnumerable()

e.Row текущая строка в активном листе спреда, и я ожидаю, что смогу сделать что-то вроде этого:

IEnumerable<FarPoint.Win.Spread.Row> = FarPointSpread1.ActiveSheet.Rows[e.Row].AsEnumerable();

Я хочу перебрать все поля подряд и установить значения во время выполнения - которые будут поступать из базы данных. Есть ли способ, которым я могу достичь этого? Если есть какое-то решение, пожалуйста, дайте мне знать с некоторыми примерами. Даже если пример не может быть показан с использованием Farpoint - любой другой вид примера приветствуется. Заранее спасибо.

1 ответ

Решение

Вы можете создать метод расширения. Пример без FarPoint:

public class TestClass
{
    public IReadOnlyCollection<int> Values { get; set; }
}

public static class TestClassExtensions
{
    public static IEnumerable<int> AsEnumerable(this TestClass cls)
    {
        return cls.Values.AsEnumerable();
    }
}

// Call
var cls = new TestClass();
var enum = cls.AsEnumerable();

В этом примере показана общая структура метода расширения - конечно, он очень упрощен, поскольку TestClass содержит значения уже в соответствующей форме. Вы реализуете метод расширения, чтобы он содержал логику для перечисления строк для FarPoint.
Насколько я понимаю ваш вопрос, вы хотите расширить одну строку и перечислить значения полей. Вы будете использовать тип данных строки и перечислять поля в методах расширения.

Другие вопросы по тегам