Helaas, na een beetje dieper te hebben gegraven door de broncode van het C#-stuurprogramma (en de Java-broncode om te zien wat het deed), is het daadwerkelijke serveradres dat werd gebruikt als onderdeel van het ophalen, verborgen in de Enumerator als een privélid (_serverInstance
).
Het is met name verborgen in een klasse genaamd de MongoCursorEnumerator
. Helaas is er geen "eerlijke" manier om er te komen. Je zou .NET-reflectie kunnen gebruiken om er bij te komen, maar dat is over het algemeen geen goed idee, vooral niet met code die je niet bezit. Als u een aangepaste vork van de bestuurder wilt hebben, kunt u deze eenvoudig als een nieuwe eigenschap toevoegen. Misschien wilt u hier
een probleem toevoegen .
Over het algemeen kunt u de instanties ophalen die worden gebruikt door de MongoDB-verbinding, aangezien ze beschikbaar zijn op de MongoServerInstance
klasse, het Address
eigendom.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
In jouw geval kun je het echter ook krijgen van de cursor
via de Server
eigendom:
cursor.Server.Instance.Address.Host
of
cursor.Server.Instances[]
Het C#-stuurprogramma gooit interessant en uitzondering wanneer er meer dan één exemplaar beschikbaar is. Dus als u niet weet hoeveel instanties er zijn, moet u ofwel de exception
afhandelen (InvalidOperationException
), of gebruik altijd de Instances[]
eigenschap om de gekoppelde instanties te retourneren.