Для справки код ниже почти работает, но вы не можете получить доступ к приватному члену, используя отражение в Silverlight. В любом случае, не был бы счастлив с этим взломом . Интересно отметить, что существует конструктор WebDomainClient, который принимает параметр Binding private WebDomainClient(Uri serviceUri, bool usesHttps, Binding binding)
, но XML-комментарий для этого состояния Закрытый конструктор. Должен быть обнародован, как только у нас появится сквозная история расширяемости поверх WCF . Похоже, мне придется подождать некоторое время, прежде чем они предоставят нам такую конфигурацию.
public sealed partial class AppDomainContext
{
partial void OnCreated()
{
var webDomainClient = ((WebDomainClient<AppDomainContext.IAppDomainServiceContract>)this.DomainClient);
// Can I use reflection here to get hold of the Binding
var bindingField = webDomainClient.GetType().GetField("_binding", BindingFlags.NonPublic | BindingFlags.Instance);
// In Silverlight, the value of a private field cannot be access by using reflection so the GetValue call throws an exception
// http://msdn.microsoft.com/en-us/library/4ek9c21e%28VS.95%29.aspx
var binding = bindingField.GetValue(webDomainClient) as System.ServiceModel.Channels.Binding;
// So near yet so far!!
binding.SendTimeout = new TimeSpan(0,0,1);
}
}