Bazı özelliklere sahip bir arayüz oluşturdum.
Arayüz yoksa, sınıf nesnesinin tüm özellikleri şu şekilde ayarlanır:
{ get; private set; }
Ancak, bir arabirim kullanılırken buna izin verilmez, bu nasıl yapılabilir ve eğer öyleyse nasıl?
Bazı özelliklere sahip bir arayüz oluşturdum.
Arayüz yoksa, sınıf nesnesinin tüm özellikleri şu şekilde ayarlanır:
{ get; private set; }
Ancak, bir arabirim kullanılırken buna izin verilmez, bu nasıl yapılabilir ve eğer öyleyse nasıl?
Yanıtlar:
Arayüzde sadece getter
mülkünüz için tanımlayabilirsiniz
interface IFoo
{
string Name { get; }
}
Ancak, sınıfınızda bir private setter
-
class Foo : IFoo
{
public string Name
{
get;
private set;
}
}
Arayüz genel API'yı tanımlar. Genel API yalnızca alıcı içeriyorsa arayüzde yalnızca alıcıyı tanımlarsınız:
public interface IBar
{
int Foo { get; }
}
Özel ayarlayıcı, genel api'nin (diğer herhangi bir özel üye olarak) bir parçası değildir, bu nedenle onu arabirimde tanımlayamazsınız. Ancak arayüz uygulamasına (özel) üyeler eklemekte özgürsünüz. Aslında ayarlayıcının genel veya özel olarak mı uygulanacağı yoksa ayarlayıcı mı olacağı önemli değildir:
public int Foo { get; set; } // public
public int Foo { get; private set; } // private
public int Foo
{
get { return _foo; } // no setter
}
public void Poop(); // this member also not part of interface
Setter arayüzün bir parçası değildir, bu nedenle arayüzünüzden çağrılamaz:
IBar bar = new Bar();
bar.Foo = 42; // will not work thus setter is not defined in interface
bar.Poop(); // will not work thus Poop is not defined in interface