获取在asp.net网站中定义类型的文件名

本文关键字:定义 类型 文件名 网站 asp net 获取 | 更新日期: 2023-09-27 17:58:01

如果我在文件中定义一个类

~/App_Code/Extensions/MyExtension/MyClass.cs

是否可以通过类型(或其"MyExtension"部分)检索文件名,而无需对其进行硬编码?

var extTypes = getExtensions();
foreach(var extType in extTypes)
{
    // something like
    var files = extType.GetSourceFiles();
    //or maybe asp.net keeps track of types in the dynamically created assembly
    var files2 = SomeAspNetClass.WhereDidThisTypeComeFrom(extType);
}

或者以任何方式将其注入到类中?

[ThisFile]
public class MyClass : MyBase
{
    private string _file = <thisfile>;
}

获取在asp.net网站中定义类型的文件名

此类信息只有在包含调试符号的编译语言(如C#)中才真正可用。因此,如果您有一个Debug构建,那么您可以通过检查当前的StackFrame来获得这些信息。

var stackFrame = new StackFrame(true);
stackFrame.GetFileName()

当然,您可能不想在您的生产代码上进行调试构建,因此,考虑其他方法来实现您在这里想要做的事情可能是值得的。

也许你在找这个?

Assembly.GetAssembly(typeof(YourTypeHere)).Location