Tüm projeler boyunca sabit bir değer kullanılacak bir arama sınıfı oluşturuyorum. Sorun şu ki, böyle bir şey yaratmak için çeşitli çözümler var. İçinde enumlar, yapılar veya sabitler içeren tek bir sınıf oluşturabilir veya her 'nesne' için tek bir sınıf oluşturabilirim. En iyi çözümün ne olacağını merak ediyorum.Arama sınıfı enum, struct, public const, başka bir şey kullanıyor mu?
Öncelikle böyle bir şey yaptığını düşündü:
public static class Defines
{
public enum PAGELAYOUT_NAMES
{
STANDARD = "Standard"
}
}
Ama şahsen bu kadarını çeteleler dizeleri kullanılarak sevmiyorum. diğer seçenek kodunu görmek bile daha çirkin bir yapı kullanmak olacaktır: Bu biraz daha iyi görünüyor
public static class Defines
{
public struct PAGELAYOUT_NAMES
{
public static string STANDAARD = "Standaard";
}
}
ancak birçok seçeneği içerken kafa karıştırıcı olabilir:
public static class Defines
{
public const string PAGELAYOUT_NAMES_STANDARD = "Standard";
}
public static class PageLayout
{
public const string STANDARD = "Standard";
}
başka öneriler: Bu yayını yazarken
, bu en iyi/temiz bir seçenek olacağını düşünüyorum? Projeyi sadece bazı sabitleri tanımlayan birkaç sınıfla doldurmak bana çok fazla yük ve kargaşa gibi görünüyor.
Edit Özgün bağlamda çok açık değildi, ancak arama değerleri yalnızca dizelerle sınırlı değil. Aşağıda bazı çok iyi öneriler yalnızca dizeleri kullandığınızda mümkündür, ancak Int, DateTime ve diğer türlerin de desteklenmesi gerekir. Buradaki cevaplardan güzel fikirler aldım, şimdiki projemde hangisinin en iyi çalışacağını deneyeceğim.
aşağıda önerilere sayesinde Nihai uygulanan çözelti, böyle arama sınıfları uyguladık:
internal class Base<T>
{
internal T Value{ get; private set;}
internal Base(T value)
{
Value = value;
}
}
public class PageLayout
{
public static string Standard { get { return new Base<string>("Standard").Value; } }
}
Bu aşağıda verilen bir cevap dayanmaktadır. Nedeni, şimdi bu dizeleri & tamsayılar için de kullanabildiğimden kaynaklanıyor, bu da bana açıklama getirecek olsa bile bir açıklama ve kaynak dosyası içeren bir enum ile mümkün değil.
Iain Galloway'in önerisini temizlemeyi tercih etsem de, bunu uygulayabildim çünkü Guids gibi string olmayan ve tamsayı değerleri de ekleyebilirsiniz. DateTime, vb. –