我有一个项目需要使用 CosmosDB Change Feed 监控多个 cosmosDB 中的多个集合。
ChangeFeedObserver 的签名非常明确,我不清楚如何传入 ComosDb.Document(json 格式)表示的对象类型。
public Task ProcessChangesAsync(IChangeFeedObserverContext context, IReadOnlyList<Document> deltas, CancellationToken cancellationToken)
因此,我有一系列观察者,只有一个词不同。传递给处理的类的名称。
DocumentObserverHelper.Processing<MyType>(context, deltas, cancellationToken);
使用该类型,我的助手能够反序列化和处理文档。虽然现在我有许多观察者课程。例如:MyType1Observer.cs、MyType2Observer.cs、MyType3Observer.cs、MyType4Observer.cs
所有类共享同一个基类,所以我一直在尝试使用类型绑定器对它们进行反序列化,但据我所知,这需要一个命名类型的属性。
JsonSerializerSettings jsettings = new JsonSerializerSettings()
{
TypeNameHandling = TypeNameHandling.All,
TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple,
SerializationBinder = this.knownTypesBinder,
};
BaseCosmosDBDocument baseCosmosDBDocument = (BaseCosmosDBDocument)JsonConvert.DeserializeObject(payload, jsettings);
这当然会导致无法将 JsonObject 反序列化为 BaseCosmosDbDocument(或其派生类)的异常
我正在寻找可以使用目标类类型实例化或能够确定目标类类型的单个观察者类