Моя проблема касается синтаксиса синтаксиса инициализации объекта в C#, в частности синтаксиса для инициализации свойства списка.
JSchema библиотеки Newtonsoft .NET Schema предоставляет свойство с именем Enum
, которое является IList<JToken>
, и я хочу использовать инициализацию объекта для инициализации экземпляра такого класса JSchema. Чтобы инициализировать это свойство, я должен использовать список JToken с именем enumStrings
.
К сожалению, поле Enum
доступно только для чтения, поскольку оно содержит только get
, как видно из JSchema.Enum.
//The list containing the values i want to use for initialization
List<JToken> enumString = ...
var schema = new JSchema
{
Type = JSchemaType.Object,
Properties =
{
{ "EnumLabel", new JSchema
{
Type = JSchemaType.String,
Enum = { listaenum } //ERROR: it expects a JToken not a List<JToken>
} }
}
};
Я также не могу использовать следующее решение, потому что свойство Enum
доступно только для чтения:
Properties =
{
{ "EnumLabel", new JSchema
{
Type = JSchemaType.String,
Enum = new List<JToken>(enumStrings) //ERROR: a property without setter or inaccessible setter cannot be assigned to
} }
}
Любое предложение сделать это? Значения содержатся только в enumStrings и всегда изменяются, поэтому их можно жестко запрограммировать в инициализаторе объекта.
Enum
является свойством только для чтения вJSchema
, аJSchema
имеет только открытый конструктор без параметров. Я не могу ответить на ваш вопрос прямо сейчас, но ясно, что вам придется искать в другом направлении, потому что этот метод построения не будет компилироваться. - person Zoran Horvat   schedule 27.02.2018Enum
нельзя изменить наJSchema
, и я не знаю, как правильно его инициализировать. Может быть, вы могли бы попробовать с классомJSchemaGenerator
, но мне это не нравится. - person Zoran Horvat   schedule 27.02.2018enum
a> со свойством , которое называетсяEnum
. - person Rawling   schedule 27.02.2018