Archive for February, 2007
February 21, 2007 at 13:06 ·
NHibernate konusunda çok fazla tecrübem olmadığından bazı durumlarda sıkıntı yaşayabiliyorum. Bunlardan birisinin çözümü de son derece basitmiş ama benim bulmak için canımı çıkarttı.
Herhangi bir objeyi veritabanından almak istediÄŸinizde, “eÅŸit olmayan” durumunu kullanmak istiyorsanız; ICriteria‘ya ÅŸu ÅŸekilde “Not Equal” durumunu ekleyebilirsiniz:
.Add(Expression.Not(Expression.Eq(“FieldName”, value)));
Yani, kısacası, Expression.Not ve Expression.Eq (equal)’ı birleÅŸtirmeniz gerekiyor. BaÅŸkalarının vakit kaybetmemesi dileÄŸi ile…
February 11, 2007 at 09:36 ·
Kullanmakta olduÄŸunuz bir class’ın veya class’ın herhangi bir instance’ının (objenin) içerisinde bulunduÄŸu assembly’nin sürümüne eriÅŸmek aÅŸağıdaki kadar basit.
Peki buna neden ihtiyaç duyabilirsiniz? Mesela kullanmakta olduÄŸunuz bir component’in hangi sürümünü kullandığınıza programmatic olarak eriÅŸmeye ihtiyaç duymanız gibi bir durumla karşılaÅŸabilirsiniz.
Örnek:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(this.GetType().Assembly.GetName().Version.ToString());
Response.Write(typeof(MyCustomClass).Assembly.GetName().Version.ToString());
}
}
February 8, 2007 at 16:46 ·
ÖrneÄŸin Array’lerden bildiÄŸiniz üzere bazı objeler üzerinde degisken[0], degisken[1] ÅŸeklinde deÄŸer alabilmek ve deÄŸer atamak mümkündür.
Peki kendi yazdığınız bir class içerisinde bunu nasıl yapabilirsiniz? Bunun için C# özel bir keyword içeriyor: this. “this” keyword’unun içinde bulunduÄŸumuz class’ın o anki instance’ına eriÅŸmek için kullanıldığını hepimiz biliyoruz fakat aÅŸağıdaki örnekte de görebileceÄŸiniz üzere bu keyword’ün baÅŸka bir kullanımı daha var.
using System.Web;
namespace Sunali
{
public class CSharpIndexer
{
private string[] data = new string[4];
public string this[int index]
{
get { return data[index]; }
set { data[index] = value; }
}
public void WriteToStream(HttpResponse response)
{
for (int i = 0; i < data.Length; i++)
{
response.Write(this[i] + "");
}
}
}
}
AÅŸağıdaki kod bir ASPX dosyasının içeriÄŸidir…
namespace Sunali
{
public class ClassToUserIndexer : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
DoSomething();
base.OnLoad(e);
}
public void DoSomething()
{
CSharpIndexer csi = new CSharpIndexer();
csi[0] = "Ahmet";
csi[1] = "Ali";
csi[2] = "AyÅŸe";
csi[3] = "Mehmet";
csi[4] = "CoÅŸkun";
csi.WriteToStream(Response);
}
}
}
Not: Örnekte görmüş olduÄŸunuz class’a ait indexer “string” deÄŸer döndürmek ve kabul etmek üzere yazıldı fakat siz “this” keyword’ünden önce bulunan “string” tipi yerine istediÄŸiniz tipi yazarak indexer özelliÄŸinden faydalanabilirsiniz.
February 4, 2007 at 15:49 ·
System.Threading.Thread class’ı üzerinde bulunan method’ların yardımı ile ilgili Thread üzerinde memory slot’ları oluÅŸturup, içlerinde istediÄŸiniz bilgiyi saklayabilirsiniz.
Çok basit bir örneğini aşağıda ekliyorum.
using System.Threading;
public class SlotDataProvider
{
public static object GetFromSlot(string slotName)
{
LocalDataStoreSlot slot = GetSlot(slotName);
if (slot == null)
return null;
return Thread.GetData(slot);
}
private static void SaveToSlot(string slotName, object data)
{
LocalDataStoreSlot slot = GetSlot(slotName);
if (slot == null)
return;
Thread.SetData(slot, data);
}
private static LocalDataStoreSlot GetSlot(string slotName)
{
return Thread.GetNamedDataSlot(slotName);
}
}