Парсинг полностью определенного имени блока?

Если Вы работаете с SQL Server 2005 или позже существует также библиотека CLR, доступная в http://www.sqlsharp.com/ , который обеспечивает реализации.NET строки и функций RegEx, которые, в зависимости от Вашего объема и типа данных может быть легче использовать, и в некоторых случаях функции обработки строк.NET могут быть более эффективными, чем T-SQL.

28
задан Roger Lipscombe 14 November 2012 в 14:21
поделиться

3 ответа

Класс AssemblyName может анализировать имя сборки за вас, просто передайте строку в его конструктор. Если у вас есть имя типа, указанное в сборке, я думаю, вам придется сначала удалить часть типа строки (то есть все до первой запятой).

18
ответ дан 28 November 2019 в 03:48
поделиться

Если сборка загружена, вы можете использовать что-то вроде этого:

    Assembly assembly = Assembly.GetExecutingAssembly();
    string assemblyName = assembly.GetName().Name;

В приведенном выше примере я использовал исполняющую сборку, но вы просматриваете загруженную сборку.

Обновление: Вы всегда можете загрузить сборку в отдельный AppDomain, получить имя сборки и после этого выгрузить ее. Дайте мне знать, если вам понадобится образец.

-1
ответ дан 28 November 2019 в 03:48
поделиться

Проверьте Класс Path . Он имеет множество функций синтаксического анализа имен файлов. Или вы можете попробовать:

string qualType = @"System.String, mscorlib, Version=2.0.0.0, Culture=neutral, publicKeyToken=b77a5c561934e089";
Type t = Type.GetType(qualType, false); 
if (t == null) 
{
   Console.WriteLine("Invalid qualified type string.");
   return;
}
Console.WriteLine(t.FullName);

Итак, у вас есть что-то вроде этого?

Assembly assem = Assembly.LoadFile("PathToTheAssembly.dll");
Type t = assem.GetType("Namespace.And.Type.Name");
t.FullName

Если вы хотите разобрать форму BNF , приведенный выше пример с использованием GetType должен работать для вас.

EDIT: Хорошо, это должно делать то, что вы хотите, если у вас есть имя:

Assembly assem = Assembly.GetAssembly(Type.GetType(assembly_qualified_name, false));
if(assem != null)
{
   byte[] pkt = assem.GetName().GetPublicKeyToken();
   Version ver = assem.GetName().Version;
   CultureInfo ci = assem.GetName().CultureInfo();
}
-2
ответ дан 28 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: