3 HAZİRAN 2009, ÇARŞAMBA
Nasıl C dinamik özellikler oluştururum#?
Bir statik özellikleri bir dizi ile bir sınıf oluşturmak için arıyorum. Çalışma zamanında, bu nesneyi veritabanından diğer dinamik özellikler eklemek mümkün olmak istiyorum. Ayrıca bu nesneler, sıralama ve filtreleme yetenekleri eklemek istiyorum.
Nasıl C yapacağım#?
CEVAP
3 HAZİRAN 2009, ÇARŞAMBA
Bir sözlük kullanabilirsiniz
Dictionary<string,object> properties;
Benzer bir şey yapılır çoğu durumda, bu gibi bitti sanırım.< / ^ br . Herhangi bir durumda, sen-cekti kazanmak bir şey yaratmak bir "gerçek" özelliği ile set ve get set, yana olurdu oluşturulan çalışma zamanı sırasında ve değil kullanarak kodunuzu...
İşte bir örnek, filtreleme ve sıralama olası bir uygulama (hata denetleme) göstermek:
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication1 {
class ObjectWithProperties {
Dictionary<string, object> properties = new Dictionary<string,object>();
public object this[string name] {
get {
if (properties.ContainsKey(name)){
return properties[name];
}
return null;
}
set {
properties[name] = value;
}
}
}
class Comparer<T> : IComparer<ObjectWithProperties> where T : IComparable {
string m_attributeName;
public Comparer(string attributeName){
m_attributeName = attributeName;
}
public int Compare(ObjectWithProperties x, ObjectWithProperties y) {
return ((T)x[m_attributeName]).CompareTo((T)y[m_attributeName]);
}
}
class Program {
static void Main(string[] args) {
// create some objects and fill a list
var obj1 = new ObjectWithProperties();
obj1["test"] = 100;
var obj2 = new ObjectWithProperties();
obj2["test"] = 200;
var obj3 = new ObjectWithProperties();
obj3["test"] = 150;
var objects = new List<ObjectWithProperties>(new ObjectWithProperties[]{ obj1, obj2, obj3 });
// filtering:
Console.WriteLine("Filtering:");
var filtered = from obj in objects
where (int)obj["test"] >= 150
select obj;
foreach (var obj in filtered){
Console.WriteLine(obj["test"]);
}
// sorting:
Console.WriteLine("Sorting:");
Comparer<int> c = new Comparer<int>("test");
objects.Sort(c);
foreach (var obj in objects) {
Console.WriteLine(obj["test"]);
}
}
}
}
Bunu Paylaş:
Nasıl iki JavaScript nesnelerin özelli...
Nasıl dinamik olarak değiştirmek angul...
Nasıl dinamik olarak bir web sayfası&#...
Nasıl Android köşeleri yuvarlatılmış b...
Nasıl dinamik olarak oluşturulan öğele...