/// <summary> /// This API supports the Entity Framework infrastructure and is not intended to be used directly from your code. /// </summary> /// <param name="xobject">This API supports the Entity Framework infrastructure and is not intended to be used directly from your code.</param> /// <returns>This API supports the Entity Framework infrastructure and is not intended to be used directly from your code.</returns> public override TextSpan GetTextSpan(XObject xobject) { var el = xobject as XElement; var ts = new TextSpan(); if (el != null) { var etr = el.GetTextRange(); if (etr != null) { // subtract 1 from these, since VS uses zero-based column & line numbers ts.iStartLine = etr.OpenStartLine - 1; ts.iStartIndex = etr.OpenStartColumn - 1; ts.iEndLine = etr.CloseEndLine - 1; // don't subtrace 1 from here, since the XML editor treats the "closing" column is the first // column after the ">" bracket ts.iEndIndex = etr.CloseEndColumn; } } else { var atr = xobject.GetTextRange(); if (atr != null) { // subtract 1 from these, since VS uses zero-based column & line numbers ts.iStartLine = atr.OpenStartLine - 1; ts.iStartIndex = atr.OpenStartColumn - 1; ts.iEndLine = atr.CloseEndLine - 1; // don't subtrace 1 from here, since the XML editor treats the "closing" column is the first // column after the ">" bracket ts.iEndIndex = atr.CloseEndColumn; } else { if (xobject.Parent != null && xobject.Parent != xobject) { // fallback case. If we couldn't get a text range for this element, use the one for the parent. return GetTextSpan(xobject.Parent); } } } return ts; }