Ограничить тип arg на основе существующих перегрузок - PullRequest
1 голос
/ 02 апреля 2011

Допустим, у Foo есть 2 перегрузки:

void Foo(int[] array) { ... }
void Foo(int[,] array) { ... }

Я написал функцию Bar, которая вызывает Foo, и я хочу, чтобы Bar поддерживал как аргументы int [], так и int [,],поэтому у меня есть это:

void Bar(int[] array)
{
    // do some work here, and finally call Foo:
    Foo(array);
}

void Bar(int[,] array)
{
    // do some work here, and finally call Foo:
    Foo(array);
}

Я хочу удалить дублирование кода, сделав всего один общий метод Bar.Псевдокод:

void Bar<TArray>(TArray array)
    where TArray is_a_type_accepted_by Foo
{
    // do some work here, and finally call Foo:
    Foo(array);
}

Возможно ли это?

1 Ответ

2 голосов
/ 02 апреля 2011

Нет, такое ограничение невозможно в C #.

...