如何使用从Assembly.LoadFrom加载的Assembly中使用命名空间

时间:2019-05-28 09:01:58

标签: c# namespaces c++-cli .net-assembly

基于此问题How to get Namespace of an Assembly?

我可以使用Assembly.GetTypes()从程序集中检索名称空间,但是当在项目中加载“添加引用”时,如何在C#文件的第一行中提供像using Namespace这样的检索到的名称空间文件设置?

其他C#文件是什么?如何为他们提供这个已加载的名称空间?

我的方法:

// using NameSpaceFromLib; ??? how to do this with Assembly.LoadFrom

namespace Test
{
    public class ClassA : DisposableObject
    {
        static ClassA()
        {
            AppDomain currentDomain = AppDomain.CurrentDomain;
            // switch between 32 and 64 bit version
            currentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomainAssemblyResolve);
        }

        private const string LibraryName = "LibToLoad";
        private static Assembly CurrentDomainAssemblyResolve(object sender, ResolveEventArgs args)
        {
            if (args.Name.StartsWith(LibraryName, StringComparison.InvariantCultureIgnoreCase))
            {
                return LoadBitDepthDependentAssembly(LibraryName + ".dll");
            }
            return null;
        }

        private static Assembly LoadBitDepthDependentAssembly(string assemblyname)
        {
            var currentDirectory = Environment.CurrentDirectory;
            try
            {
                var platformDirectory = Environment.Is64BitProcess ? "x64" : "x86";
                var newPath = Helper.GetApplicationPath(platformDirectory);
                Environment.CurrentDirectory = newPath;
                var p = Path.Combine(newPath, assemblyname);
                var assembly = Assembly.LoadFrom(p);                
                return assembly;
            }
            finally
            {
                Environment.CurrentDirectory = currentDirectory;
            }
        }
    }
}

谢谢!

PS:我需要用它来区分运行时是否加载C ++ / CLI dll的x86或x64变体

0 个答案:

没有答案
相关问题