Что может быть хорошим шаблоном для разработки общих моделей JSON, в которых добавляются свойства идентификации во время выполнения на основе настроенного хранилища документов?
В настоящее время модели идентичности жестко запрограммированы, и модели наследуются от них, однако я бы предпочел просто написать универсальные модели без необходимости указывать такие свойства идентичности, как это (потому что мне понадобится другое определение модели для той же модели, в зависимости от по типу хранилища)
PersonModel : CouchAdapterModel, IJsonModel {
string Name { get; set; }
}
CouchAdapterModel : IJsonModel {
string _id { get; set; }
string _rev { get; set; }
}
Таким образом, PersonModel получает эти два унаследованных свойства и будет соответственно в сериализованном Json, как это необходимо для couch.
но давайте скажем, что я не хочу использовать наследование для этого, скорее я хочу, чтобы свойства идентификатора подразумевались или добавлялись во время выполнения на основе выбранного хранилища документов
тогда я могу определить модель в целом, но затем, если я захочу сохранить или прочитать ее с чего-то другого, кроме CouchDB, она получит соответственно свойства идентичности
Не могу придумать супер чистый способ сделать это, хотя... одна мысль была иметь какое-то свойство IJsonIdentity, требуемое тогда, это было бы внедрено во время выполнения как
CouchDBIdentity : IJsonIdentity {
string _id { get; set; }
string _rev { get; set; }
}
или же
MongoDBIdentity : IJsonIdentity {
string whatever { get; set; }
}
и затем во время выполнения, когда поставщик модели создает модель, внедрение зависимости или что-то устанавливает свойство идентификации в модели...
проблема заключается в том, что я больше не могу получить свойства на корневом уровне модели, вместо этого они находятся под свойством Identity этой модели, поэтому стандартный JSON для бэкэнда не будет совпадать, и люди не смогут просто использовать его как и ожидалось...
любая идея будет принята с благодарностью