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

2020-09-11 17:35:32 +08:00
 qW7bo2FbzbC0
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 之中?岂不是造成循环了?

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

感谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/706227

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX