
using MongoDB.Driver; using System; /// <summary> /// The result of a delete operation. /// </summary> public abstract class DeleteResult { /// <summary> /// The result of an acknowledged delete operation. /// </summary> public class Acknowledged : DeleteResult { private readonly long _deletedCount; /// <inheritdoc /> public override long DeletedCount => _deletedCount; /// <inheritdoc /> public override bool IsAcknowledged => true; /// <summary> /// Initializes a new instance of the <see cref="T:MongoDB.Driver.DeleteResult.Acknowledged" /> class. /// </summary> /// <param name="deletedCount">The deleted count.</param> public Acknowledged (long deletedCount); } /// <summary> /// The result of an unacknowledged delete operation. /// </summary> public class Unacknowledged : DeleteResult { private static Unacknowledged __instance = new Unacknowledged (); /// <summary> /// Gets the instance. /// </summary> public static Unacknowledged Instance => __instance; /// <inheritdoc /> public override long DeletedCount { get; } /// <inheritdoc /> public override bool IsAcknowledged => false; private Unacknowledged (); } /// <summary> /// Gets the deleted count. If IsAcknowledged is false, this will throw an exception. /// </summary> public abstract long DeletedCount { get; } /// <summary> /// Gets a value indicating whether the result is acknowledged. /// </summary> public abstract bool IsAcknowledged { get; } internal static DeleteResult FromCore (BulkWriteResult result); } 上面的 Acknowleged 继承于 DeleteResult 可以是为啥要写到 DeleteResult 之中?岂不是造成循环了?
1 kkkkkrua 2020-09-11 18:15:55 +08:00 类中类,那个代码的意思是,对于 DeleteResult 默认的 2 个实现,用的话可以直接用他声明好的,如果不满足需求,自己另外实现这个抽象类 |
2 forgottencoast 2020-09-12 18:16:35 +08:00 写在里面是因为作者认为大多数时候不需要关心具体的实现类,只用抽象类 DeleteResult 就可以了。 没有循环这个说法,这种是内部类,大部分时候等同于命名空间的作用,除了可以访问一些类内部的成员。 |
3 qW7bo2FbzbC0 OP |