Как использовать пространство имен из сборки, загруженной с Assembly.LoadFrom - PullRequest
0 голосов
/ 28 мая 2019

На основании этого вопроса Как получить пространство имен сборки? :

Я могу получить пространство имен из сборки с помощью Assembly.GetTypes(), но как я могу предоставить этот полученный файл пространства имен шириной, например using Namespace, в первых строках файла C # при загрузке с помощью «Добавить ссылку» в настройках проекта?

Что с другими файлами 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: Мне нужно это различать во время выполнения, если x86 или x64 вариант C ++ / CLI dll для загрузки

...