Для вызова метода C ++ / CLI с параметром System :: DateTime в качестве параметра требуется значение «ValueType»? - PullRequest
9 голосов
/ 31 мая 2010

Я пытаюсь вызвать метод, написанный на C ++ / CLI из C #. Код C ++ / CLI используется для обновления столбца TIMESTAMP в базе данных Oracle, учитывая идентификатор записи и объект System::DateTime, который является .NET-совместимым типом данных для типа Oracle TIMESTAMP.

Метод, который я вызываю, имеет следующий прототип:

bool ChangeJobUpdateDate (int jobIdIn, System::DateTime^ updateDateIn)

Я добавил ссылку на этот проект DLL в созданный мной тестовый проект; Я пишу тесты на C #. Однако, когда я пытаюсь вызвать этот метод из проекта модульного теста C #, у функции появляется следующее объявление метода (через intellisense):

bool ChangeJobUpdateDate (int jobIdIn, ValueType updateDateIn)

По общему признанию, я не настолько знаком с C ++ / CLI, так что я чего-то упускаю?

1 Ответ

12 голосов
/ 31 мая 2010

Я подозреваю, что это потому, что вы используете DateTime^ вместо DateTime. Это тип значения, так почему вы пытаетесь использовать ссылку?

C # не имеет никакого способа представления ссылочного типа в штучной упаковке, связанного с типом значения, поэтому лучшее, что он может сделать, это ValueType - я подозреваю , что происходит, хотя я не могу скажу наверняка из-за отсутствия у меня опыта работы с C ++. Попробуйте просто DateTime и посмотрите, как это выглядит ...

...