Konteyner sınıfı ve dış sınıflar için erişilebilir olan iç içe geçmiş bir sınıf tanımlamak istiyorum, ancak iç içe geçmiş sınıfın örneklenmesini denetlemek istiyorum, yalnızca kapsayıcı sınıfın örnekleri, iç içe geçmiş sınıfın yeni örneklerini oluşturabilir.Dış sınıflar tarafından iç içe geçmiş bir sınıfın erişime izin vermesine izin ver ancak izin verilsin
geçmeden kodu umarım bu göstermelidir: Bu External
tarafından erişilebilir olması için
public class Container
{
public class Nested
{
public Nested() { }
}
public Nested CreateNested()
{
return new Nested(); // Allow
}
}
class External
{
static void Main(string[] args)
{
Container containerObj = new Container();
Container.Nested nestedObj;
nestedObj = new Container.Nested(); // Prevent
nestedObj = containerObj.CreateNested(); // Allow
}
}
Nested
genel olması gerekir. Nested
için yapıcıyı oluşturmayı denedim, ancak Container
, Container
'un Nested
temel bir sınıfı olmadığından örneklerin oluşturulmasını engeller. Nested
için kurucuyu internal
olarak ayarlayabilirim, ancak kurucuya aynı montajdakiler de dahil olmak üzere tüm harici sınıflar tarafından erişimi engellemek istiyorum. Bunu yapmanın bir yolu var mı?
Bu, erişim değiştiricileri aracılığıyla gerçekleştirilemiyorsa, Nested()
içinde bir istisna atabilmem mümkün olabilir. Bununla birlikte, new Nested()
'un çağrıldığı bağlamı nasıl test edeceğimi bilmiyorum.
Çalışıyor! Teşekkürler! –