aşağıdaki örnekte olduğu gibi, türetilmiş nesneler özel bir koleksiyon dönmek ve onlara bazı işlemleri gerçekleştirmek için bir üs jenerik sınıfta bir yöntem oluşturmak istiyoruz:Merakla Dönüşümlü Şablon Kalıbı ve jenerik kısıtlamaları (C#)
using System;
using System.Collections.Generic;
namespace test {
class Base<T> {
public static List<T> DoSomething() {
List<T> objects = new List<T>();
// fill the list somehow...
foreach (T t in objects) {
if (t.DoSomeTest()) { // error !!!
// ...
}
}
return objects;
}
public virtual bool DoSomeTest() {
return true;
}
}
class Derived : Base<Derived> {
public override bool DoSomeTest() {
// return a random bool value
return (0 == new Random().Next() % 2);
}
}
class Program {
static void Main(string[] args) {
List<Derived> list = Derived.DoSomething();
}
}
}
Benim sorunum ben
gibi bir kısıtlamayıclass Base<T> where T : Base {
}
bu şekilde böyle bir sınırlama belirtmek mümkün mü belirtmek gerekir böyle bir şey yapmak için mi?
Bunun gibi kodu için iyi dil desteği eklemek için bu uservoice öneri oluşturulan oylayabiliriz çekinmeyin! https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/32188474-support-this-as-a-return-type-to-make-building-f –