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 |