2013-10-02 3 views
2

Здесь используется метод VB.NET, который работает отлично.Редактирование метаданных файла - Код в порядке VB, но не C#

Private Sub editMetadata(ByRef bmp1 As Bitmap, ByVal intTitleId As Integer, ByVal strTitle As String) 

     Dim ci As System.Reflection.ConstructorInfo = _ 
         GetType(PropertyItem).GetConstructor(BindingFlags.NonPublic Or _ 
         BindingFlags.Instance Or BindingFlags.[Public], Nothing, New Type() {}, Nothing) 

     Dim outPropertyItem As PropertyItem = DirectCast(ci.Invoke(Nothing), PropertyItem) 

     outPropertyItem.Id = intTitleId 

     ' Type=1 means Array of Bytes. 
     outPropertyItem.Type = 1 
     outPropertyItem.Len = strTitle.Length 

     outPropertyItem.Value = Encoding.Unicode.GetBytes(strTitle) 

     bmp1.SetPropertyItem(outPropertyItem) 

End Sub 


Сейчас в C#, я столкнулся в блоке дороги с самой первой строке этого метода.

System.Reflection.ConstructorInfo ci = 
     GetType(PropertyItem).GetConstructor(BindingFlags.NonPublic || 
     BindingFlags.Instance || BindingFlags.[Public], null, new Type() {}, null); 


После преобразования синтаксиса из VB в C# (что я знаком с) У меня еще есть 6 ошибок на этом одном разделе.

Error



Таким образом, проблема может быть решена пару способов ...

Что такое правильный C# синтаксис кода, показанного выше.

ИЛИ ..

Как редактировать метаданные файлов корректно в C#.

Благодарим за помощь!

+2

Использование | вместо || in BindingFlags – Egor4eg

+0

А, это избавилось от ошибки №3. Спасибо :) !! – adam

ответ

3
System.Reflection.ConstructorInfo ci = 
     typeof(PropertyItem).GetConstructor(BindingFlags.NonPublic | 
     BindingFlags.Instance | BindingFlags.Public, null, new Type[] {}, null); 
+0

Я удалил [] вокруг BindingFlags.Public, и тогда все это правильно. Благодаря!! Отметьте как ответ через 10 минут, когда это разрешено. – adam

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