Yani, Func >, Generics ve lambda ifadeleri ile uğraşırken, konfor bölgemden biraz uzaktayım ama sanırım genel fikri (çeşit) ama yine de biraz kafam karıştı.C# Func <> ve jenerikler
Ben SortableObservableCollection sınıfı uyguladık(çevrimiçi bir yerden alınan - ben aldım her kimse sayesinde!) Ve böyle kullanılır:
x nesnesi türü tarafından uygulanan_lookuplistViewModel.Sort(x => x.BrandName, ListSortDirection.Ascending);
sortable koleksiyonu. Bu örnekte, BrandName uygulanan nesne türünün bir özelliğidir, ancak yukarıdaki kodu genel bir sınıfta kullanmak ve sıralanacak mülkte geçmek istiyorum. Sıralama yöntemi şöyle görünür:
public void Sort<TKey>(Func<T, TKey> keySelector, ListSortDirection direction)
{
switch (direction)
{
case ListSortDirection.Ascending:
{
ApplySort(Items.OrderBy(keySelector));
break;
}
case System.ComponentModel.ListSortDirection.Descending:
{
ApplySort(Items.OrderByDescending(keySelector));
break;
}
}
}
denir Sıralama yöntemi şöyle tanımlanır olduğu jenerik sınıfı:
public class ExtendedLookupManagerViewModel<VMod, Mod> : LookupManagerViewModel
where VMod : ExtendedLookupViewModel
where Mod : ExtendedLookupModelBase
ve böyle bir örneğini oluşturmak istiyorum: property
_medProd = new ExtendedLookupManagerViewModel<MedicinalProductViewModel, MedicinalProduct>(string property);
sıralamak üzerine bir özelliktir. İdeal olarak bu tip güvenli olmalı, ancak bir dize yeterli olacaktır.
Herkes beni doğru yönde yönlendirmeye yardım edebilir mi lütfen?
ne olacağını soruyorsunuz, yayınladığınız kodun ilk satırı, gereksinimlerinizin açıklamasından istediklerinizi yapıyor, ancak kurucunuzun görüştüğünüzden bahsettiğiniz şeyle ilgisi yok. Çok kafam karıştı. Sıralamaya çalıştığınız koleksiyonunuz nedir? –
Tam olarak haklısınız, ilk satır çalışıyor, ancak yalnızca generic kullanarak değil, ExtendedLookupManagerViewModel türetilmiş belirli bir tür kullanırsam. BrandName, MedicinalProductViewModel'de bir özelliktir, ancak başka türde kullanırsam başka bir özelliği kullanabilmem gerekir. Tahmin ettiğim soru, x.BrandName yerine geçirilmiş bir parametreyi nasıl kullanabileceğim.Umarım bunu biraz daha netleştirir? – pilsdumps