IArgumentProvider Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Birden çok ağaç düğümünün bağımsız değişkenlerine erişmek için bir iç arabirim sağlar (DynamicExpression, ElementInit, MethodCallExpression, InvocationExpression, NewExpression ve IndexExpression). Bu API yalnızca iç kullanıma yöneliktir.
public interface class IArgumentProvider
public interface IArgumentProvider
type IArgumentProvider = interface
Public Interface IArgumentProvider
- Türetilmiş
Açıklamalar
Bu API'i kullanmamalısınız. Yalnızca derleme yeniden düzenlemesi nedeniyle geneldir ve yalnızca iç performans iyileştirmeleri için mevcuttur. Ağaçların boyutunu azaltan iki iyileştirme sağlar:
Düğümlerin yerine bir IList<T>ReadOnlyCollection<T>üzerinde tutmasını sağlar. Bu, her düğüm için salt okunur koleksiyonu ayırma maliyetinden tasarruf sağlar.
Belirli sayıda bağımsız değişkeni (örneğin,
Block2
, ,Block2
Block4
) tutan özel alt sınıfların oluşturulmasını sağlar. Bu nedenle, bu düğümler öğelerini depolamak için hem a ReadOnlyCollection<T> hem de dizi ayırmaktan kaçınarak düğüm başına 32 bayt tasarruf sağlar. Bu teknik, , InvocationExpressionve MethodCallExpressiongibi BlockExpressionçeşitli düğümler tarafından kullanılır.
İfade ağacı düğümleri, nesnelerin özgün LINQ özelliklerini ReadOnlyCollection<T> kullanıma açmaya devam eder. Bunu, hem diziyi hem de normalde dizide depolanacak bir öğeyi depolamak için bir alanı yeniden kullanarak yapar.
Dizi durumu için koleksiyon yerine ReadOnlyCollection<T>olarak IList<T> yazılır. Düğüm ilk kez oluşturulduğunda bir dizidir. Bu kitaplıktaki derleyici veya yardımcı programlar bu arabirim aracılığıyla öğelere erişir. Dizi öğelerine erişmek, diziyi olarak ReadOnlyCollection<T>yükseltir.
Nesne durumu için, ilk bağımsız değişken olarak Objectyazılan bir alanda depolanır. Düğüm ilk oluşturulduğunda, bu alan ilk bağımsız değişkenin değerini tutar Expression . Bu kitaplıktaki derleyici ve yardımcı programlar bağımsız değişkenlere eriştiğinde, yine bu arabirimi kullanır ve ilk bağımsız değişkenin erişimcisi, veya ReadOnlyCollection<T> büyük/küçük harflerini işleyen Expression nesneyi döndürmek için iç Expression.ReturnObject<T>(System.Object)
yardımcı yöntemini kullanır. Kullanıcı öğesine eriştiğinde ReadOnlyCollection<T>nesne alanı doğrudan üzerinde ReadOnlyCollection<T>tutulacak şekilde güncelleştirilir.
Özelliklerin Expression tutarlı olarak aynı ReadOnlyCollection<T>değerini döndürmesi önemlidir. Aksi takdirde, ifade ziyaretçileri tarafından kullanılan yeniden yazan ağaç yürüteci kırılır. LinQ v1'den aynı Expression düğümden farklı ReadOnlyCollection<T> döndürmek hataya neden olan bir değişikliktir. Şu anda kullanıcılar düğümün değişip değişmediğini söylemek için nesne kimliğine güvenebilir. öğesini aşırı yüklenmiş bir alanda depolamak ReadOnlyCollection<T> hem bellek kullanımını azaltır hem de genel API için uyumluluğu korur.
Özellikler
ArgumentCount |
İfade ağacı düğümüne yönelik bağımsız değişkenlerin sayısını döndürür. Bu API yalnızca iç kullanıma yöneliktir. |
Yöntemler
GetArgument(Int32) |
sınırların dışındaysa |