2013-06-17 3 views
-1

У меня есть заголовочный файл C с:Использование C структуры в C#

typedef struct CallbackData 
{ 
    Int 32   linkType;     
    string   strUrl;         
} CallbackData 

У меня есть функция в C#:

private Int32 CallbackFunction(IntPtr intPtr, Int32 callbackData, Int32 commandInfo, object callbackObject) 
    { 
    if (callbackObject.GetType() == typeof(CallbackData)) 
    { 
      var callbackData = (CallbackData) callbackObject; 
      callbackData.strUrl = "Something"; 
      return 0; 
    } 
    if (callbackData == 283) 
    { 
      return 0; 
    } 
    Console.WriteLine(callbackData); 
    return 0; 
} 

Я хотел бы импортировать CallbackData-структуру в C#, а затем проверить чтобы увидеть, является ли callbackObject, который передан в CallbackFunction, имеет тип CallbackData. Затем я хотел бы установить strUrl из callbackObject.

Я создал-структуру как и в другой C# файл:

[StructLayout(LayoutKind.Sequential)] 
public struct CallbackData 
{ 
    Int32 linkType; 
    string strUrl; 

} 

В.С. говорит, что "object не содержит определение для strUrl и не метод расширения strUrl принимать первый аргумент типа object не может быть (вам не хватает директивы использования или ссылки на сборку?) ». Как отредактировать strUrl объекта, если он имеет тип CallbackData?

EDIT: Изменено, как я выбрал входящий параметр.

ответ

0

Все объявлен private по умолчанию в C#, так что вам нужно определить свой-структуру, как это:

[StructLayout(LayoutKind.Sequential)] 
public struct CallbackData 
{ 
    public Int32 linkType; 
    public string strUrl; 
} 
Смежные вопросы