Используя c# 4.0 - создание интерфейса и класса, который реализует интерфейс. Я хочу объявить дополнительный параметр в интерфейсе и иметь его быть отраженным в классе. Так, у меня есть следующее:
public interface IFoo
{
void Bar(int i, int j=0);
}
public class Foo
{
void Bar(int i, int j=0) { // do stuff }
}
Это компилирует, но это не выглядит правильным. Интерфейс должен иметь дополнительные параметры, потому что иначе он не отражается правильно в подписи метода интерфейса.
Я должен пропустить дополнительный параметр и просто использовать nullable тип? Или это будет работать, как предназначено без побочных эффектов или последствий?
Вы могли бы рассмотреть альтернативу "pre-optional-parameters":
public interface IFoo
{
void Bar(int i, int j);
}
public static class FooOptionalExtensions
{
public static void Bar(this IFoo foo, int i)
{
foo.Bar(i, 0);
}
}
Если вам не нравится внешний вид новой языковой функции, вы не обязаны ее использовать.
Посмотрим в сторону, это сделает именно то, что, похоже, вы хотите сделать.