考虑我有一个使用以下代码加载的程序集(类库dll),
Assembly a = Assembly.LoadFrom(@"C:\Documents and Settings\E454935\My Documents\Visual Studio 2005\Projects\nunit_dll_hutt\for_hutt_proj\bin\Debug\asdf.dll");
Run Code Online (Sandbox Code Playgroud)
我需要得到大会的类型.为了得到类型我需要程序集的命名空间.
Type t = asm.GetType("NAMESPACE.CLASSNAME",false,true);
Run Code Online (Sandbox Code Playgroud)
如何在上面的行中获取命名空间.?!为了获得命名空间,我需要获取类型..?
Type.Namespace;
Run Code Online (Sandbox Code Playgroud)
即我需要获得可用于获取其类型的程序集的命名空间.
提前致谢
我有VS 2008和csproj项目(C#Library).
在项目的属性中,具有程序集名称和默认名称空间.注意:每个类都有一个名称空间.
是否有可能在运行时获取默认命名空间的值?
我的目标是使用资源,我需要默认命名空间的值:
Assembly assembly = Assembly.GetExecutingAssembly();
//foreach (string resourceName in assembly.GetManifestResourceNames()){}
Stream syntaxModeStream = assembly.GetManifestResourceStream(pathToResources
+ ".SyntaxModes.xml");
Run Code Online (Sandbox Code Playgroud)
更新:
彼得说我做不到.默认命名空间不存储在程序集中
var resource = assembly.GetManifestResourceNames().Single(p => p.EndsWith(".SyntaxModes.Xml"))
Run Code Online (Sandbox Code Playgroud)
存储的默认命名空间在哪里?
我只能使用Addins Visual Studio(DTE对象)阅读?
使用dotnet核心:.NET Core SDK版本:3.1.102
为什么以下返回 null
?
typeof(MyClassName).GetTypeInfo().Assembly.GetManifestResourceStream("MyFile.cs")
Run Code Online (Sandbox Code Playgroud)
我验证了该文件存在于解决方案中,并且在属性“嵌入式资源”中具有构建操作
假设我们有几个程序集,它们都实现了IAnimal,我们想去一个地方找出其他IAnimal实现的存在.
特征:
我们不希望在集会之外进行预先知识
程序集中可能有一个寄存器类/方法
最好不要使用反射.到目前为止,这似乎是唯一的方法
讨论:
我想通过继承静态地做这个,但是,我不知道汇编级初始化序列.