Verwenden von Moq zum Festlegen von Indexern in C #

Ich habe Probleme herauszufinden, wie man @ einstel indexers in C # mit Moq. Die Moq-Dokumentation ist schwach und ich habe viel gesucht ... was ich gerne machen würde, ist ähnlich wie in der Lösung vonHow to Moq Festlegen einer indizierten Eigenschaft:

var someClass = new Mock<ISomeClass>();
someClass.SetupSet(o => o.SomeIndexedProperty[3] = 25);

Ich möchte das Obige so ändern, dass es für jeden Index und jeden Wert funktioniert, sodass ich einfach so etwas tun kann:

someClass.Object.SomeIndexedProperty[1] = 5;

Zurzeit habe ich die folgenden, die für den indizierten Eigenschafts-Getter großartig funktioniert, aber wenn ich jemals den Wert gesetzt habe, ignoriert Moq ihn:

var someValues = new int[] { 10, 20, 30, 40 };
var someClass = new Mock<ISomeClass>();
someClass.Setup(o => o.SomeIndexedProperty[It.IsAny<int>()])
    .Returns<int>(index => someValues[index]);

// Moq doesn't set the value below, so the Assert fails!
someClass.Object.SomeIndexedProperty[3] = 25;
Assert.AreEqual(25, someClass.Object.SomeIndexedProperty[3]);