2016-01-29 1 views
0

Это:Как получить доступ к членам C#, которые отличаются в случае с внутри vb.net проекта

public class Something 
{ 
    public string lala = ""; 

    public class Lala 
    { 
     //... 
    } 
} 

является законным C# теперь я скомпилировать его и т.д., и уронить DLL в новом проекте VB.NET: как сделать Я получаю доступ к члену lala от VB.Net, если я попытаюсь получить ошибку «« lala »неоднозначно, потому что в классе« Что-то »существует несколько типов членов с таким именем«.

+4

Вы создали _instance_ of 'Something'? Как вы пытались получить к нему доступ до сих пор. Также обратите внимание, что VB не чувствителен к регистру, поэтому имеет вложенный класс и поле с одинаковыми буквами, но другой корпус может вызвать проблемы. –

+1

'dim wat as new Something()' и 'dim foo = wat.lala' – Carsten

+0

Я предполагаю, что я просто риторически [ошибка, которую вы получаете:« lala »неоднозначна, потому что в классе существует несколько видов членов с таким именем Что-то], работая в VB.Net по проекту, и это nTh раз, когда я сталкиваюсь с этим со сторонней dll ... единственным решением, которое я знаю, является ISpy, Reflexil и переименовывает поле, перекомпилирует ... но это незаконно isn 't it;) – esjr

ответ

1

К сожалению, вам, вероятно, придется прибегнуть к размышлениям для доступа к этой DLL. Когда вы получите экземпляр System.Type для класса «Что-то» (используя метод экземпляра «GetType» типа System.Reflection.Assembly), вы будете использовать метод GetField типа экземпляра для доступа к полю «lala» и тип экземпляра 'GetNestedType' для доступа к вложенному типу Lala.

Imports System.Reflection 
... 
Dim assembly As Assembly = Assembly.Load(...) 
Dim outerType As Type = assembly.GetType("Something") 
Dim field As FieldInfo = outerType.GetField("lala") 
Dim nestedType As Type = outerType.NestedType("Lala") 

Вы бы затем использовать field.SetValue (..) и field.GetValue (..) для доступа к полю 'Лала'.

+0

это или Reflexil ...correct :) – esjr

+1

Конечно, у вас есть доступ к C# -коду, тогда было бы лучше просто переименовать поле или вложенный тип. –

1

Первый: добавьте ссылку на свой проект.

add reference

Просмотр в файл Something_Lala DLL и добавить его.

Затем вам необходимо импортировать это в свой файл, инициализировать его, а затем использовать.

psudo code

Пример кода выглядит плохо, но это было все, что вы дали SO сообществу работать.

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

  • Нет связанных вопросов^_^