public virtual void ChainSelector(ISurrogateSelector selector) { if (selector == null) { throw new ArgumentNullException("selector"); } if (selector == this) { throw new SerializationException(Environment.GetResourceString("Serialization_DuplicateSelector")); } if (!SurrogateSelector.HasCycle(selector)) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycleInArgument"), "selector"); } ISurrogateSelector surrogateSelector = selector.GetNextSelector(); ISurrogateSelector surrogateSelector2 = selector; while (surrogateSelector != null && surrogateSelector != this) { surrogateSelector2 = surrogateSelector; surrogateSelector = surrogateSelector.GetNextSelector(); } if (surrogateSelector == this) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycle"), "selector"); } surrogateSelector = selector; ISurrogateSelector surrogateSelector3 = selector; while (surrogateSelector != null) { if (surrogateSelector == surrogateSelector2) { surrogateSelector = this.GetNextSelector(); } else { surrogateSelector = surrogateSelector.GetNextSelector(); } if (surrogateSelector == null) { break; } if (surrogateSelector == surrogateSelector3) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycle"), "selector"); } if (surrogateSelector == surrogateSelector2) { surrogateSelector = this.GetNextSelector(); } else { surrogateSelector = surrogateSelector.GetNextSelector(); } if (surrogateSelector3 == surrogateSelector2) { surrogateSelector3 = this.GetNextSelector(); } else { surrogateSelector3 = surrogateSelector3.GetNextSelector(); } if (surrogateSelector == surrogateSelector3) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycle"), "selector"); } } ISurrogateSelector nextSelector = this.m_nextSelector; this.m_nextSelector = selector; if (nextSelector != null) { surrogateSelector2.ChainSelector(nextSelector); } }
public virtual void ChainSelector(ISurrogateSelector selector) { if (selector == null) { throw new ArgumentNullException("selector"); } if (selector == this) { throw new SerializationException(Environment.GetResourceString("Serialization_DuplicateSelector")); } if (!SurrogateSelector.HasCycle(selector)) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycleInArgument"), "selector"); } ISurrogateSelector nextSelector = selector.GetNextSelector(); ISurrogateSelector surrogateSelector1 = selector; for (; nextSelector != null && nextSelector != this; nextSelector = nextSelector.GetNextSelector()) { surrogateSelector1 = nextSelector; } if (nextSelector == this) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycle"), "selector"); } ISurrogateSelector surrogateSelector2 = selector; ISurrogateSelector surrogateSelector3 = selector; while (surrogateSelector2 != null) { ISurrogateSelector surrogateSelector4 = surrogateSelector2 != surrogateSelector1?surrogateSelector2.GetNextSelector() : this.GetNextSelector(); if (surrogateSelector4 != null) { if (surrogateSelector4 == surrogateSelector3) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycle"), "selector"); } surrogateSelector2 = surrogateSelector4 != surrogateSelector1?surrogateSelector4.GetNextSelector() : this.GetNextSelector(); surrogateSelector3 = surrogateSelector3 != surrogateSelector1?surrogateSelector3.GetNextSelector() : this.GetNextSelector(); if (surrogateSelector2 == surrogateSelector3) { throw new ArgumentException(Environment.GetResourceString("Serialization_SurrogateCycle"), "selector"); } } else { break; } } ISurrogateSelector selector1 = this.m_nextSelector; this.m_nextSelector = selector; if (selector1 == null) { return; } surrogateSelector1.ChainSelector(selector1); }