Создание общей базы - PullRequest
       11

Создание общей базы

3 голосов
/ 23 февраля 2012

Я пытаюсь перенести свои родовые функции в базовый класс, однако разнородный тип данных мешает мне сделать это. Пожалуйста, смотрите:

public class OutWriter
{
    private readonly IEnumerable<long> series1;
        private readonly IEnumerable<long> series2
        private readonly IEnumerable<long> series3
        private readonly IEnumerable<double> series4
        private readonly double sum;

public OutWriter()
{
  series1 = PopulateS1()
  series2 = PopulateS2()
  series3 = PopulateS3()
  series4 = PopulateS4()

sum = series4.Aggregate((x,y)=>x+y);
}
}

public class PaperWriter
{
    private readonly IEnumerable<BigInteger> series1;
        private readonly IEnumerable<BigInteger> series2
        private readonly IEnumerable<BigInteger> series3
        private readonly IEnumerable<BigInteger> series4
        private readonly BigInteger sum;

public PaperWriter()
{
  series1 = PopulateS1()
  series2 = PopulateS2()
  series3 = PopulateS3()
  series4 = PopulateS4()

sum = series4.Aggregate((x,y)=>x+y);
}
}

public class Base<T>()
{
    ????
}

Я пытаюсь выявить сходство, однако здесь задействованы long, double и BigInteger. Также агрегат выбрасывает ошибку времени компиляции из-за операции +. Подскажите, пожалуйста, как правильно это сделать?

Спасибо, -Mike

1 Ответ

1 голос
/ 23 февраля 2012

В C # нет ничего, что объединяло бы математические кольца. Существуют обходные пути, такие как пакет MiscUtil , поддерживаемый печально известным Jon Skeet, и утилита Operator, написанная другим частым центром StackOverflow Марком Гравелом, и описание его использования можно найти здесь Идея состоит в том, чтобы извлечь операции сложения, умножения и др. Как вызовы функций. Ссылка предоставляет класс Operator, который использует выражения для обеспечения сложения, умножения, деления, вычитания, равенства, равенства и других операторов ... и все это легко расширяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...