Всем добрый день. Разбирал пример шаблонного метода на основе делегатов, который используется при работе с WCF сервисами. Исходный код следующий:
// Интерфейс сервиса анализа паттернов проектирования
interface IPatternAnalyzer
{
DesignPatterns AnalyzePatterns(string url);
}
// Прокси класс, инкапсулирующий в себе особенности работы
// с WCF инфраструктурой
class PatternAnalyzerProxy : IPatternAnalyzer
{
class PatternAnalyzerClient : ClientBase<IPatternAnalyzer>
{
public IPatternAnalyzer ChannelAnalyzer
{
get { return Channel; }
}
}
public DesignPatterns AnalyzePatterns(string url)
{
return UseProxyClient(pa => pa.AnalyzePatterns(url));
}
private T UseProxyClient<T>(Func<IPatternAnalyzer, T> accessor)
{
var client = new PatternAnalyzerClient();
try
{
var result = accessor(client.ChannelAnalyzer);
client.Close();
return result;
}
catch (CommunicationException e)
{
client.Abort();
throw new OperationFailedException(e);
}
}
}
В процессе разбора, поскольку у меня нет практики использования WCF я упростил код и получил:
namespace patterns.TemplateMethod
{
class WCF_Template_Method
{
public static void Main()
{
PatternAnalyzerProxy _p = new PatternAnalyzerProxy();
_p.AnalyzePatterns("www.yandex.ru");
}
}
class DesignPatterns
{
}
// Интерфейс сервиса анализа паттернов проектирования
interface IPatternAnalyzer
{
DesignPatterns AnalyzePatterns(string url);
}
// Прокси класс, инкапсулирующий в себе особенности работы
// с WCF инфраструктурой
class PatternAnalyzerProxy : IPatternAnalyzer
{
class PatternAnalyzerClient: IPatternAnalyzer
{
public IPatternAnalyzer ChannelAnalyzer
{
get { return new PatternAnalyzerProxy(); }
}
public DesignPatterns AnalyzePatterns(string url)
{
throw new NotImplementedException();
}
}
public DesignPatterns AnalyzePatterns(string url)
{
return UseProxyClient(pa => pa.AnalyzePatterns(url));
}
private T UseProxyClient<T>(Func<IPatternAnalyzer, T> accessor)
{
var client = new PatternAnalyzerClient();
var result = accessor(client.ChannelAnalyzer);
return result;
}
}
}
Когда я попробовал запустить упрощенный код, получил зацикливание на строке
return UseProxyClient(pa => pa.AnalyzePatterns(url));
Вопрос ошибка в примере или данное зацикливание следствие упрощения?
Доброго дня! Хочу сделать разделение ресурсов между сборками, так как показано здесь: https://professorwebru/my/WPF/binding_and_styles_WPF/level10/10_7
Дело в том что у меня изменяется глобальная переменная внутри блока try, но другой блок не хочет видеть ее измененияИзменял банально x = int
Здравствуйте, сейчас пишу telegram-bot на c# и возникла следующая проблема: как сохранять картинки у пользователя на устройстве в определенной...