Найти классы, которые существуют в одном файле C #, а не в другом? - PullRequest
0 голосов
/ 20 июня 2019

Я работаю над проектом с WSDL, который использует XSD-файлы для генерации классов C #.WSDL не определяет все классы, описанные в файлах XSD, и мне нужно включить некоторые из них в вызовы, которые я делаю с WSDL.Я могу использовать инструмент определения схемы XML для файлов XSD, чтобы сгенерировать остальные классы, которые мне нужны, но из-за зависимостей созданный файл содержит классы, которые также генерируются при использовании WSDL.

Существуют сотни классов, которые перекрываются в двух файлах .cs (эталонный файл, сгенерированный WSDL, и файл, сгенерированный инструментом XSD), поэтому, когда эти два файла импортируются в проект с использованием,Есть столкновения.Есть ли способ проанализировать оба файла .cs и найти перекрывающиеся классы?В конечном счете, я хотел бы удалить перекрывающиеся или скопировать неперекрывающиеся в reference.cs, так что используйте классы, которые мне не хватает.

В качестве примера представим, что следующие классы сгенерированы с помощью WSDL из некоторых XSD-файлов, мы назовем это FromWSDL.cs:

namespace SomeXSDDefinedName
{
    class Fleet
    {
        List<Car> Cars { get; set; }
    }

    class Car
    {
        string Make { get; set; }
    }
}

Теперь мне нужно использовать некоторые классыиз другого XSD, который ссылается на те же файлы классов / XSD, что и WSDL.Поэтому, если я использую Инструмент определения схемы XML для генерации классов C # из XSD, я получу файл, подобный этому, мы назовем его FromXSD.cs:

namespace SomeXSDDefinedName
{
    class Fleet
    {
        List<Car> Cars { get; set; }
    }

    class Car
    {
        string Make { get; set; }
    }

    class Truck
    {
        int Payload { get; set; }
    }

class Driver
    {
        Car Car { get; set; }
    }
}

То, что я хочу, это способпрограммно (сценарий или что-то еще) найти классы, присутствующие в файле FromXSD.cs, которых нет в файле FromWSDL.cs, а затем вывести их либо в отдельный файл, либо в файл FromWSDL.cs.В этом случае Truck and Driver из файла FromXSD.cs.Поскольку они создаются из одних и тех же файлов XSD с помощью WSDL или инструмента XSD, каждый файл имеет одинаковые пространства имен и имена классов, что делает невозможным добавление ссылок на оба файла с использованием.

...