當前位置: 首頁>>代碼示例>>C#>>正文


C# NamespaceContainer.LookupExtensionMethodCandidates方法代碼示例

本文整理匯總了C#中Mono.CSharp.NamespaceContainer.LookupExtensionMethodCandidates方法的典型用法代碼示例。如果您正苦於以下問題:C# NamespaceContainer.LookupExtensionMethodCandidates方法的具體用法?C# NamespaceContainer.LookupExtensionMethodCandidates怎麽用?C# NamespaceContainer.LookupExtensionMethodCandidates使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Mono.CSharp.NamespaceContainer的用法示例。


在下文中一共展示了NamespaceContainer.LookupExtensionMethodCandidates方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。

示例1: LookupExtensionMethod

		public ExtensionMethodCandidates LookupExtensionMethod (IMemberContext invocationContext, TypeSpec extensionType, string name, int arity, NamespaceContainer container, int position)
		{
			//
			// Here we try to resume the search for extension method at the point
			// where the last bunch of candidates was found. It's more tricky than
			// it seems as we have to check both namespace containers and namespace
			// in correct order.
			//
			// Consider:
			// 
			// namespace A {
			//	using N1;
			//  namespace B.C.D {
			//		<our first search found candidates in A.B.C.D
			//  }
			// }
			//
			// In the example above namespace A.B.C.D, A.B.C and A.B have to be
			// checked before we hit A.N1 using
			//
			ExtensionMethodCandidates candidates;
			for (; container != null; container = container.Parent) {
				candidates = container.LookupExtensionMethodCandidates (invocationContext, extensionType, name, arity, ref position);
				if (candidates != null || container.MemberName == null)
					return candidates;

				var container_ns = container.ns.Parent;
				var mn = container.MemberName.Left;
				int already_checked = position - 2;
				while (already_checked-- > 0) {
					mn = mn.Left;
					container_ns = container_ns.Parent;
				}

				while (mn != null) {
					++position;

					var methods = container_ns.LookupExtensionMethod (invocationContext, extensionType, name, arity);
					if (methods != null) {
						return new ExtensionMethodCandidates (invocationContext, methods, container, position);
					}

					mn = mn.Left;
					container_ns = container_ns.Parent;
				}

				position = 0;
			}

			return null;
		}
開發者ID:pcc,項目名稱:mono,代碼行數:51,代碼來源:namespace.cs


注:本文中的Mono.CSharp.NamespaceContainer.LookupExtensionMethodCandidates方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。