Bir mülke olarak eklemek gerekiyordu diyor . Bu bu arabirim zaman (belli ki olabilir gerçi basit bir oto-mülk) siz de fiili özelliği sağlamanız gerekir anlamına gelmez:
public class Foo : IYourInterface
{
public Action<string> YourAction { get; set; }
// ...
}
ardından gelen
Action<string>
kullanabilirsiniz göz önüne alındığında arayüz:
IYourInterface iFoo = new Foo();
iFoo.YourAction = s => Console.WriteLine(s);
iFoo.YourAction("Hello World!");
Hans belirtildiği gibi, arayüzünüze gösterebilir sadece get
(ya da sadece bir set
) istersen. Bu, sınıfının'un diğerine sahip olamayacağı anlamına gelmez, sadece arabirim aracılığıyla erişilemeyeceği anlamına gelir. Örneğin:
public interface IYourInterface
{
Action<string> YourAction { get; }
}
public class Foo : IYourInterface
{
public Action<string> YourAction { get; set; }
}
Yani yukarıdaki kodda, yalnızca arayüz üzerinden bir
get
olarak
YourAction
özelliğine erişebilir, ama sen yapabilirsin
set
veya
Foo
sınıfından
get
onu.
Sözleşmenize/arabiriminize delegeler eklemek kötü bir tasarımdır. –
@KirillPolishchuk bunu açıklayabilir misiniz? – anatol