Ваш код не компилируется, потому что:
Ошибка 1 Интерфейсы не могут содержать поля
Интерфейс об операциях (включая свойства), они не могут содержать данные. Вы можете использовать свойства здесь, но они должны быть реализованы в вас классе:
public interface IDrawable
{
double x { get; set; }
double y { get; set; }
// ...
}
public class Beacon : IDrawable
{
public double x { get; set; }
public double y { get; set; }
public Beacon(string id, double x, double y)
{
// ...
this.x = x;
this.y = y;
}
}
Если базовый класс должен содержать эти данные, сделать это абстрактный класс:
public abstract class Drawable
{
public double x { get; set; }
public double y { get; set; }
public abstract object GetDrawable();
}
public class Beacon : Drawable
{
public Beacon(string id, double x, double y)
{
//this.id = id;
this.x = x;
this.y = y;
}
public override object GetDrawable()
{
// ...
}
}
Таким образом, окончательный вывод здесь есть - читайте о различиях между классами и абстрактными классами и решайте, какой путь вы должны предпринять.
напишите свой код и попробуйте, прежде чем задавать вопрос. Ваш код даже не компилируется! –