Методы расширения, которые вы создаете, не для Doctype_A или Doctype_B, вы создаете их для IEnumerable .Таким образом, на самом деле у вас есть два метода расширения с одной и той же сигнатурой.
Если вам нужен один специфический для A или B, вы должны сделать это так
internal static IEnumerable<XElement> ByStatusOrAny(this DocType_A doc, byte status = 0)
{
return doc.Query.Descendants("DocType_A").Select(doc => doc);
}
, а затем вызвать его как
DocType_A.ByStatusOrAny().AsViewData();
Я знаю, вы хотите, чтобы он был ограничен, но это не так.Независимо от того, к какому классу он будет применен, независимо от того, к какому классу он применяется, независимо от того, к какому классу он относится, можно использовать [this].пространство имен и ссылаются только на пространство имен, которое вы хотите в определенных файлах, которые вы хотите, но я никогда не пробовал это, поэтому ваш пробег может быть очень.
Кроме того, как уже отмечали другие, ваш пример, кажется, несоответствовать нормальному варианту использования для методов расширения.Поэтому, если вы действительно этим занимаетесь, возможно, вы захотите что-то переделать.