Это может быть неосведомленный вопрос, но я не уверен, почему я не могу использовать методы псевдонимов и расширений пространства имен вместе.
Следующий пример отлично работает:
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 сборки контракта) для использования в веб-сервисе. Использование псевдонимов было бы очень удобно, поскольку я мог бы использовать псевдонимы следующим образом и продолжать использовать различные методы расширения (такие как ToContract и т. Д.):
using BillingContracts = Namespace.Billing.Contracts;
using IssuingContracts = Namespace.Issuing.Contracts;
и т.д ...
Я с нетерпением жду ответа ... Я уверен, что он прямо вперед, но я, по жизни, не могу понять, почему он не работает.
Спасибо!