Giao diện xác định API công khai. Nếu API công cộng chỉ chứa getter, thì bạn chỉ xác định getter trong giao diện:
public interface IBar
{
int Foo { get; }
}
Setter riêng không phải là một phần của api công khai (như bất kỳ thành viên riêng nào khác), do đó bạn không thể định nghĩa nó trong giao diện. Nhưng bạn có thể tự do thêm bất kỳ thành viên (riêng tư) nào để thực hiện giao diện. Trên thực tế, không quan trọng việc setter sẽ được triển khai ở chế độ công khai hay riêng tư, hoặc nếu có setter:
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 không phải là một phần của giao diện, vì vậy nó không thể được gọi qua giao diện của bạn:
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