Например, есть делегат следующий сигнатуру:
Void Test(IPAddress IPAddress, Boolean Zip, Byte[] Data);
Мне нужно чтобы пре вызови этого делегата, вызывался другой делегат с сигнатурой:
Void Test(IPAddress IPAddress, Boolean Zip, Byte[] Data, Guid GUID);
То есть GUID я указываю один раз только при инициализаций второго делегата.
И всегда когда вызывается первый делегат, сразу вызывается второй с привязанным GUID’ом.
Во, как закрутил! Надеюсь, кто–то поймет.
Здравствуйте, L0rdNet, Вы писали:
LN>Например, есть делегат следующий сигнатуру:
...
LN>То есть GUID я указываю один раз только при инициализаций второго делегата.
LN>И всегда когда вызывается первый делегат, сразу вызывается второй с привязанным GUID’ом.
LN>Во, как закрутил! Надеюсь, кто–то поймет.
Да, кажется это называется фиксация параметра.
Можно ручками сделать так: Создать класс-адаптер, который будет держать требуемый Guid и второй делегат. У класса определить метод с сигнатурой первого делегата, который делегирует второму делегату и передает туда Guid.
или так:
delegate void Test1(IPAddress IPAddress, Boolean Zip, Byte[] Data);
delegate void Test2(IPAddress IPAddress, Boolean Zip, Byte[] Data, Guid id);
static Test1 MakeTest1(Test2 test2, Guid id)
{
return (ip, zip, data) => test2(ip, zip, data, id);
}
Что будет равносильно.
Здравствуйте, L0rdNet, Вы писали:
LN>Например, есть делегат следующий сигнатуру:
LN>LN>Void Test(IPAddress IPAddress, Boolean Zip, Byte[] Data);
LN>
LN>Мне нужно чтобы пре вызови этого делегата, вызывался другой делегат с сигнатурой:
LN>LN>Void Test(IPAddress IPAddress, Boolean Zip, Byte[] Data, Guid GUID);
LN>
LN>То есть GUID я указываю один раз только при инициализаций второго делегата.
LN>И всегда когда вызывается первый делегат, сразу вызывается второй с привязанным GUID’ом.
LN>Во, как закрутил! Надеюсь, кто–то поймет.
delegate void Test(IPAddress IPAddress, Boolean Zip, Byte[] Data, Guid GUID);
delegate void ShortTest(IPAddress IPAddress, Boolean Zip, Byte[] Data);
ShortTest DefineGuid(Test test, Guid guid)
{
return (ip, zip, data) => test(ip, zip, data, guid);
}