Путаница объясняется тем, что символ обратной косой черты \
используется как побег на двух разных уровнях. Во-первых, интерпретатор Python сам выполняет подстановки для \
, прежде чем модуль re
когда-нибудь увидит вашу строку. Например, \n
преобразуется в символ новой строки, \t
преобразуется в символ табуляции и т. Д. Чтобы получить фактический символ \
, вы также можете избежать его, поэтому \\
дает один \
] персонаж. Если символ, следующий за \
, не является признанным escape-символом, тогда \
обрабатывается как любой другой символ и проходит через него, но я не рекомендую в зависимости от этого. Вместо этого всегда избегайте ваши символы \
, удваивая их, т. Е. \\
.
Если вы хотите увидеть, как Python расширяет ваши экраны строк, просто распечатайте строку. Например:
s = 'a\\b\tc'
print s
Если s
является частью совокупного типа данных, например. список или кортеж, и если вы напечатаете этот агрегат, Python заключит строку в одинарные кавычки и будет включать экраны \
(в канонической форме), поэтому имейте в виду, как печатается ваша строка. Если вы просто напечатаете в интерпретаторе строку с кавычками, она также отобразит ее в кавычках с экранами '\'.
Как только вы знаете, как кодируется ваша строка, вы можете подумать о том, что re
. Например, если вы хотите сбежать \
в строку, которую вы переходите к модулю re
, вам необходимо передать \\
в re
, что означает, что вам нужно будет использовать \\\\
в вашем цитированном Python строка. Строка Python закончится с \\
, а модуль re
будет рассматривать это как единственный литерал \
.
Альтернативный способ включения символов \
в строках Python - использовать необработанные строки, например r'a\b'
эквивалентен "a\\b"
.
Попробуйте это:
extern alias asm1;
extern alias asm2;
namespace Client
{
class Program
{
static void Main(string[] args)
{
asm1.MyNs.MyClass mc1 = null;
asm2.MyNs.MyClass mc2 = null;
}
}
}
И добавляют global,asm1
к ссылке проекта для assembly1 и global,asm2
для assembly2
Я думаю, что необходимо использовать псевдоним экстерна . у Anson Horton есть хороший блог на этой проблеме и как использовать псевдоним экстерна для фиксации ее.
При ссылке на некоторый блок в проекте, он имеет "глобальный" псевдоним по умолчанию. Когда Вы добавите другой псевдоним для того блока, например, "глобальный, AssemblyA", Вы сошлетесь на него как это:
using SomeTypeAlias = AssemblyA::Company.Product.SomeType;
или:
void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }