简体   繁体   中英

How do I find the file path from a namespace.class name?

I'm programatically looking ito a .aspx file and getting the file class name declared in its CodeBehind. For example, when analyzing myFile.aspx I read in its Page Directive and found its CodeBehind equals "myApplication\\myPage.aspx.vb". Then I use the code below:

[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]

Now I want to read the BaseFile (class = myApplication.Forms.BasePage). However, to read in this file, I need I need to get its full path instead of its namespace/class hiearchy. In this case, the BasePage is wrapped in a different namespace declaration thus I cannot just change the '.' to '\\'.

How can I get the path of BasePage so I can read it? Thank you - Frank

I think you need to focus on getting the 'Type' of the class regardless of location via a GetType() method, and then apply Reflection on that type to get its location. So don't concentrate on the namespace but rater the type within the BaseFile namespace. Here is some code I translated from the MSDN to get the physical location of my 'Customer' class. You should be able to use this to get the location of any binary based on its type in your application:

    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))

You can read up on this more at the following link:

Assembly.CodeBase Property:
http://msdn.microsoft.com/en-us/library/system.reflection.assembly.codebase.aspx

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM