Merhaba,
C#’ta kodlama yaparken ansızın aşağıdaki gibi bir hatayla karşılaşabilirsiniz.
Koruma Düzeyi Nedeniyle xxx Erişilebilir Değil. Yalnızca Ortak Türler İşlenebilir.
Bu olası hatanın temel sebebi algoritmada kullandığınız yapıların erişim belirleyicileriyle alakalıdır.
Örneğin, XmlSerializer sınıfıyla çalışırken bu olası hatayı şu şekilde alabiliriz;
class Program
{
static void Main(string[] args)
{
OrnekSinif ornek = new OrnekSinif();
ornek.OrnekProperty = 3;
var xml = new XmlSerializer(typeof(OrnekSinif));
using (StreamWriter sw = new StreamWriter(@"D:\Ornek.xml"))
{
xml.Serialize(sw, ornek);
}
Console.Read();
}
}
class OrnekSinif
{
public int OrnekProperty { get; set; }
}
Yukarıdaki örnek kod bloğunda gördüğünüz gibi “OrnekSinif” isminde bir sınıfımız mevcut. XmlSerializer sınıfı ile ilgili sınıfın xml modelini çıkartmaktayız. Tabi bu işlemleri yaparken 8. satırdaki “typeof(OrnekSinif)” komutu ile “OrnekSinif” isimli sınıfı kullanacağımızı belirtiyoruz. “OrnekSinif” isimli sınıfın ise erişim belirleyicisi private olduğuna dikkatinizi çekerim. Projemizi bu şekilde derleyip çalıştırdığımızda ilgili olası hatayla aşağıdaki gibi karşı karşıya kalmaktayız.
İşte bu ve benzer misallerde alınan ilgili hatanın çözümü, ilgili yapıların erişim belirleyicisini public yapmaktan geçer. public dışında protected yahut internal olarak da şansınızı deneyebilirsiniz.
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar dilerim…
