qW7bo2FbzbC0
V2EX  ›  C#

请教 MongoDB 驱动中的一段继承代码含义

By qW7bo2FbzbC0 at 2020 年 9 月 11 日 · 5180 次点击
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 之中?岂不是造成循环了?

3 条回复  •  2020-09-14 10:26:37 +08:00
kkkkkrua
   1
kkkkkrua  
   2020 年 9 月 11 日
类中类,那个代码的意思是,对于 DeleteResult 默认的 2 个实现,用的话可以直接用他声明好的,如果不满足需求,自己另外实现这个抽象类
forgottencoast
   2
forgottencoast  
   2020 年 9 月 12 日
写在里面是因为作者认为大多数时候不需要关心具体的实现类,只用抽象类 DeleteResult 就可以了。
没有循环这个说法,这种是内部类,大部分时候等同于命名空间的作用,除了可以访问一些类内部的成员。
qW7bo2FbzbC0
   3
qW7bo2FbzbC0  
OP
   2020 年 9 月 14 日
@kkkkkrua #1
@forgottencoast #2

感谢
© 2026 V2EX · 24ms · 3.9.8.5