Как найти путь к файлу по имени namespace.class? - PullRequest
1 голос
/ 26 августа 2010

Я программно ищу файл .aspx и получаю имя класса файла, объявленное в его CodeBehind.Например, при анализе myFile.aspx я прочитал в его директиве страницы и обнаружил, что его CodeBehind равен «myApplication \ myPage.aspx.vb».Затем я использую код ниже:

[Code]
Dim Assm As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom("myApplication\bin\myApplication.dll")
Dim ClassType As Type = Assm.GetType("myApplication\myPage.aspx.vb")

' myBaseType = "myApplication.Forms.BasePage"
Dim myBaseType As System.Type = ClassType.BaseType
[/Code]

Теперь я хочу прочитать BaseFile (class = myApplication.Forms.BasePage).Однако для чтения этого файла мне нужно получить полный путь вместо его пространства имен / класса hiearchy.В этом случае BasePage оборачивается в другое объявление пространства имен, поэтому я не могу просто изменить '.'на '\'.

Как мне получить путь к BasePage, чтобы я мог его прочитать?Спасибо - Фрэнк

1 Ответ

0 голосов
/ 30 августа 2010

Я думаю, вам нужно сосредоточиться на получении «Типа» класса независимо от местоположения с помощью метода GetType (), а затем применить Reflection к этому типу, чтобы получить его местоположение. Поэтому не концентрируйтесь на пространстве имен, а оцените тип в пространстве имен BaseFile. Вот код, который я перевел из MSDN, чтобы узнать физическое местоположение моего класса «Клиент». Вы должны иметь возможность использовать это для получения местоположения любого двоичного файла в зависимости от его типа в вашем приложении:

    Dim SampleAssembly As [Assembly]
    ' Instantiate a target object.
    Dim myType As New Customer()
    Dim Type1 As Type
    ' Set the Type instance to the target class type.
    Type1 = myType.GetType()
    ' Instantiate an Assembly class to the assembly housing the Integer type.  
    SampleAssembly = [Assembly].GetAssembly(myType.GetType())
    ' Gets the location of the assembly using file: protocol.
    Console.WriteLine(("CodeBase=" + SampleAssembly.CodeBase))

Подробнее об этом можно прочитать по следующей ссылке:

Assembly.CodeBase Свойство:
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.codebase.aspx

...