Member 14779968 Ответов: 1

Как указать, где находится путь к файлу json в C#?


У меня есть 3 проекта под моим решением. Один из них-это основной базовый проект, где я хочу иметь json-файл "Testdata.json".

Я должен использовать этот файл во всех 3-х проектах.. Как я могу получить путь динамически, не жестко кодируя его, и избежать размещения всех 3-х проектов.

//Обновление:
Как упоминал OriginalGriff, я создал публичный статический метод для записи в файл json, чтения его и возврата в моем основном проекте "Project1", на который ссылаются два других проекта.

//Это находится в проекте 1
public class JsonDataProvider
    {
        public static string filePath;

        public static string writeToJson(IRestResponse response)
        {
            string json = response.Content;
            string path = System.Reflection.Assembly.GetCallingAssembly().CodeBase;                                                                                                                                               
            string actualPath = path.Substring(0, path.LastIndexOf("bin"));
             string projectPath = new Uri(actualPath).LocalPath;
              filePath = projectPath + @"TestData.json";
            File.WriteAllText(filePath, json);

             string data = GetData();

            return data;
            

        }

        public static string GetData()
        {
            string data = File.ReadAllText(filePath);

            return data;
        }

      
    }



//В моем "проекте 2" я использую это..
[Test]
public void GetAPITest()
{
      restResponse =  HttpGet();
 string expectedJson =JsonDataProvider.writeToJson(restResponse);
}


Что я уже пробовал:

Я пробовал .GetCallingAssembly, но таким образом я должен иметь файл json в каждом проекте.

string path = System.Reflection.Assembly.GetCallingAssembly().CodeBase;
string actualPath = path.Substring(0, path.LastIndexOf("bin"));
string projectPath = new Uri(actualPath).LocalPath;
string fileToRead = projectPath + @"TestData.json";


Также пробовать
string path = Path.Combine(Directory.GetParent(System.IO.Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName, "TestData.json");


но я получаю путь = C:\Users\TestData.json , исключение: система.UnauthorizedAccessException : доступ к пути 'C:\Users\TestData.json-это отрицается.

1 Ответов

Рейтинг:
1

OriginalGriff

Обеспечить public static метод в одной из сборок, который извлекает путь JSON (или даже сами данные JSON в виде строки) и возвращает его. При условии, что на проект ссылаются два других, они могут назвать его.


Member 14779968

Обновил вопрос.. Я создал общедоступный статический метод, который записывает ответ в файл json, а также читает его и возвращает в виде строки. Это в моем основном базовом проекте "Project1", где я также храню свой файл TestData.json. Но когда я использую этот метод в "Project2" и открываю файл TestData.json, который находится в "Project1", у меня нет в нем никаких данных