Соглашения об именах для DTO, если приложения C# и JavaScript общаются друг с другом - PullRequest
1 голос
/ 30 марта 2020

Соглашения об именах для сущности класса TypeScript говорят, что я должен использовать camelCase для имен своих атрибутов в TypeScript.

Так например:

export class Bird {
   type: string;
   nameOfBird: string;
}

Но соглашения об именах в C# скажем, что я должен префиксить атрибуты класса с _:

public class Bird {
   public string _type {get; set;}
   public string _nameOfBird {get; set;}
}

Но при отправке этих атрибутов как JSON между моими приложениями возникает конфликт, потому что я не знаю, должен ли я использовать camelCase или _case в моем JSON объекте. И это также, кажется, усложняет сортировку.

Как вы справляетесь с этим? Просто игнорируйте одно из руководящих указаний или выполните сортировку между обоими?

Ответы [ 2 ]

3 голосов
/ 30 марта 2020

Вы можете достичь и того и другого, просто используя атрибуты сериализации:

public class Bird {
    [JsonProperty("type")]
    public string _type {get; set;}
    [JsonProperty("nameOfBird")]
    public string _nameOfBird {get; set;}
}

или даже

[JsonProperty("type")]
public string AnyCompletelyDifferentName { get; set; }

Кроме этого, в C# нет соглашения для префиксов на publi c участников. Возможно, в вашей компании есть такой.

0 голосов
/ 30 марта 2020

Я не знаю, что префикс _ для атрибутов - это C# соглашение об именовании, но, если предположить, что вы правы, по крайней мере, для вашей компании, есть очень хороший способ разрешить парадокс, который вы только что представил. Создайте:

private string _nameOfBird;
public string nameOfBird {
    get {
        return _nameOfBird;
    }
    set {
        _nameOfBird = value;
    }
}

и таким образом вы соблюдаете оба соглашения.

...