..."/> ...">
Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengubah Ungkapan untuk Sifat Bersarang dalam Parameter MVC?
Jana ungkapan atribut bersarang dalam parameter MVC
Matlamatnya ialah untuk mencipta kaedah yang menukar ungkapan seperti "cust => cust.Name" kepada "parent => parent.obj.Name", dengan "parent" mewakili anak dengan model MVC jenis "T" untuk padang. Ungkapan yang ditukar ini harus serasi sebagai hujah kepada kaedah MVC.
Ungkapan gabungan
Inti penyelesaian yang dicadangkan adalah untuk menggabungkan ungkapan, sama seperti cara fungsi digabungkan. Kod berikut menunjukkan mekanisme penggabungan:
<code class="language-csharp">public static Expression<Func<TSource, TResult>> Compose<TSource, TIntermediate, TResult>( this Expression<Func<TSource, TIntermediate>> first, Expression<Func<TIntermediate, TResult>> second) { return Expression.Lambda<Func<TSource, TResult>>( second.Body.Replace(second.Parameters[0], first.Body), first.Parameters[0]); }</code>
Kaedah ini menggantikan contoh ungkapan dengan kod berikut:
<code class="language-csharp">public class ReplaceVisitor : ExpressionVisitor { private readonly Expression from, to; public ReplaceVisitor(Expression from, Expression to) { this.from = from; this.to = to; } public override Expression Visit(Expression ex) { if (ex == from) return to; else return base.Visit(ex); } } public static Expression Replace(this Expression ex, Expression from, Expression to) { return new ReplaceVisitor(from, to).Visit(ex); }</code>
Contoh praktikal
Diberikan pemilih atribut:
<code class="language-csharp">Expression<Func<object, string>> propertySelector = cust => cust.Name;</code>
dan pemilih model:
<code class="language-csharp">Expression<Func<Model, Customer>> modelSelector = model => model.Customer;</code>
Anda boleh menggabungkannya seperti berikut:
<code class="language-csharp">Expression<Func<Model, string>> magic = modelSelector.Compose(propertySelector);</code>
Menggunakan teknik ini, anda boleh mengubah ekspresi untuk mengakses sifat bersarang supaya ia sesuai dengan parameter kaedah MVC.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Ungkapan untuk Sifat Bersarang dalam Parameter MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!