2013-06-07 3 views
2

Я пытаюсь реализовать класс в C# с базовым классом (DataStore) в скомпилированной сборке. Он хочет, чтобы подпись, как это (реализация RavenDb не уместен):Как реализовать этот класс, учитывая базовый класс в C#?

public RavenDbDataStore(TimeSpan objectLifetime) : base(objectLifetime) 
    { 
    } 

    public RavenDbDataStore(TimeSpan objectLifetime, bool enableCaching) : base(objectLifetime, enableCaching) 
    { 
    } 

Однако объект, который называет этот класс ожидает конструктор, две строки. Я получаю предупреждение о базовом классе, DataStore, не содержащий никаких конструкторов без параметров.

Это не имеет смысла, заглядывая в API проекта, над которым я работаю, другой класс делает то, что я пытаюсь сделать, и беру в две строки как конструктор, но только наследуя от класса DataStore ,

Любые идеи о том, как это сделать?

EDIT: Я допустил ошибку и второй конструктор обозначил как «частный», он должен быть общедоступным.

При попытке:

общественного RavenDbDataStore (TimeSpan objectLifetime, строка param1, строка param2): основание (objectLifetime) { }

Я все еще получаю:

Не удалось найти конструктор в ReflectionUtil.CreateObject: RavenDbDataStore. Параметры конструктора могут не совпадать или может быть абстрактным классом . Параметр информация: Кол-во: 2. типов параметров: System.String, System.String

ответ

5

Вопрос заключается в том, что конструктор базового класса, который принимает два параметра помечается private, что означает, что вы не можете использовать его ,

Вы должны использовать только конструктор, который принимает один параметр (TimeSpan), а также обеспечить, что базовый класс:

public YourClass(TimeSpan lifetime) : base(lifetime) 
{ 
} 

Если вы хотите второй конструктор, который предоставляет другие аргументы, что это возможно:

public YourClass(TimeSpan lifetime, string someOtherParam) : base(lifetime) 
{ 
    // use someOtherParam 
} 

редактировать в ответ на изменения:

Сообщение об ошибке:

Информация Параметры: Количество: типы 2. Параметр: System.String, System.String

предлагает, вам необходимо пройти две строки, но не всю жизнь, к базовый класс:

public RavenDbDataStore(TimeSpan objectLifetime, string param1, string param2) 
    : base(param1, param2) { } 
+0

Спасибо! Я все еще получаю сообщение об ошибке (я также ошибся в том, что второй конструктор отмечен как частный, это не так) –

+0

@chumofchance Отредактированный ответ ... –

Смежные вопросы