Ben Karşıt yaklaşım ve bunu yapmayın söylerim. Şimdiye kadar yayınlanan çözümlerin en iyisi (FileInfo veya Uri gibi aşırı yüklenmelerden biri için alternatif bir tip kullan) bana biraz hevesli geliyor - en az sürpriz ilkesine aykırı.
İçeriği yalnızca bir dosya adı olmadan kullanarak yapılandırabiliyorsanız, dosya adının gerekli olmadığını izler. Ve benzer şekilde, eğer sadece bir dosya ismi ile inşa ederseniz, içeriğin gerekli olmadığını izler. Daha sonra, daha sonra eksik dosya adını/içeriğini daha sonra ayarlayabilirsiniz.
MyObject myObject = new MyObject(fileName);
myObject.Content = ...
MyObject myObject = new MyObject(content);
myObject.FileName = ...
Yerine sorunla mücadelede, en önemli (aşağıdaki örnekte fileName) olarak da parametrelerden birini seçin ve aşağıdaki gibi iki constructurs oluşturmak: Bir özelliğini ayarlayarak
public MyObject(string fileName) : this(fileName, null)
{
}
public MyObject(string fileName, string content)
{
... implementation
}
Anlamsızsa, null ya da her iki parametre için geçirilmesine izin verebilirsiniz. Ve o uygun olmadığını en az bir boş olmadığını ısrar edebilirsiniz:
public MyObject(string fileName, string content)
{
if (fileName == null && content == null) throw new ArgumentException(...);
...
}
Kısacası, bu gibi kısıtlamaların geçici için küçük numaralar kullanmayın.
Dize türlerinden birini kendi sınıfında sarmalayın ve bu türünü bunun yerine bir parametre olarak kabul edin. –
@Cody Grey: Merhaba, bunun bir cevap olduğunu düşünüyorum. –
Cevap olarak göndermedim, çünkü Mark Byers tarafından sağlananın bu durumda en iyi çözüm olduğunu düşünüyorum. (Bunun yerine onu bıktım.) Bunun yerine iş yapacak bir tür var olduğunda ek bir sarıcı sınıf oluşturmak için bir sebep yok. Daha genel uygulamalar için önerim muhtemelen gitmek için bir yoldur. –