Это может быть неосведомленный вопрос, но я не уверен, почему я не могу использовать методы псевдонимов пространства имен и расширения вместе.
Следующий пример работает просто отлично:
Program.cs
using System;
using ExtensionMethodTest.Domain;
namespace ExtensionMethodTest
{
class Program
{
static void Main(string[] args)
{
var m = new Domain.MyClass();
var result = m.UpperCaseName();
}
}
}
MyClass.cs
using System;
namespace ExtensionMethodTest.Domain
{
public class MyClass
{
public string Name { get; set; }
}
}
MyClassExtensions.cs
using System;
namespace ExtensionMethodTest.Domain
{
public static class MyClassExtensions
{
public static string UpperCaseName (this MyClass myClass)
{
return myClass.Name.ToUpper();
}
}
}
Однако, когда я перечислил псевдоним домена в Program.cs:
using Domain = ExtensionMethodTest.Domain;
Метод расширения больше не работает.
Это может быть довольно неприятно, когда я имею дело с преобразованием различных объектов домена в объекты контракта (скажем, у меня есть 4 сборки домена и 4 сборки контракта) для использования в веб-службе. Использование aliasing было бы очень удобно, поскольку я мог бы использовать псевдоним следующим образом и продолжать использовать различные методы расширения (такие как ToContract и т.д.):
using BillingContracts = Namespace.Billing.Contracts;
using IssuingContracts = Namespace.Issuing.Contracts;
и т.д...
Я с нетерпением жду ответа. Я уверен, что это прямо, но я, для своей жизни, не могу понять, почему это не работает.
Спасибо!