9

:Bir alıcıya açık bir şekilde sahip olmakla birlikte mülk belirleyicisini açıkça uygulamak mümkün mü? Bir salt özellik içeren bir arabirim tanımlarken

public class ModuleScreen : IModuleScreenData 
{ 
    string IModuleScreenData.Name { get; set; } 
} 
: için

public interface IModuleScreenData 
{ 
    string Name { set; } 
} 

ve girişimi Tesiste ayrıca kamuya açık getter olması için (safça) bir niyet ile açıkça uygulamak

sonra aşağıdaki hatayı alıyorum:

Error 'IModuleScreenData.Name.get' adds an accessor not found in interface member 'IModuleScreenData.Name'

hatadır az ya da çok beklenen, ancak, bu alternatif sözdizimi sonra:

derlemeyi başaramadı, yapmaya çalıştığım şeyin gerçekten mümkün olmadığını düşünüyorum. Doğru muyum, yoksa hepsinden sonra bir gizli sos sözdizimi var mı?

cevap

10

Bunu yapabilirsin: bir günü

public class ModuleScreen : IModuleScreenData 
{ 
    string IModuleScreenData.Name 
    { 
     set { Name = value; } 
    } 

    public string Name { get; private set; } 
} 

yan not, genellikle set-only özelliklerini önermem. Bir yöntem niyetini ifade etmek için daha iyi çalışabilir.

+0

Yan notla aynı fikirdeyim - diğer bir deyişle, salt okunur özellikli bir arabirim, bir sınıf tarafından uygulanan bir arabirim Çözümünüzün de geçerli olduğu, yazılabilir özellik olan, daha kabul edilebilir ve tartışılabilir şekilde daha yaygındır. –

+0

Bunun için teşekkürler ... –

-1

Arayüzün devralma sınıfında nasıl uygulandığını değiştiremezsiniz. Bütün konu budur .. Eğer bir mülkle yeni bir şeyler yapman gerekiyorsa, miras alınan mülklere özel bir uygulamaya referans veren yeni bir mülk edinebilirsiniz. Arabirimler var, böylece nesne miras için belirli bir standarda uygun olabilirsiniz.

GÜNCELLEME: Düşündüm de .. sadece bunu yapmak mümkün olmalıdır .... bu güzel derlenir:

public class ModuleScreen : IModuleScreenData 
    { 
     public string Name { get; set; } 
    } 
+0

Mümkünse yeni bir özellik oluşturmaktan kaçınmak istiyorum. Arayüzün uygulanış şeklini değiştirerek ne demek istediğinizden emin değilim - Arayüzde yer alan sözleşmeyi yerine getirmem gerektiğini ve açık uygulamanın kesinlikle bunu yapmanın yollarından biri olduğunu anlıyorum. –

+0

Güncellemeye bakın .... sadece bağlantıyı ekleyebilmeli ve arayüzü tatmin etmeliyiz – miskiw

İlgili konular