C# 在c中实现这一点的最佳OOP模式是什么
代码片段不会编译,因为它只是为了展示我想要实现的目标: 假设我有一个界面:C# 在c中实现这一点的最佳OOP模式是什么,c#,design-patterns,C#,Design Patterns,代码片段不会编译,因为它只是为了展示我想要实现的目标: 假设我有一个界面: public Interface IWalker { //Compiles but not what I need double DistanceTravelled {get; set;} //Compiler error - cant be private for set, but that's what I need
public Interface IWalker
{
//Compiles but not what I need
double DistanceTravelled {get; set;}
//Compiler error - cant be private for set, but that's what I need
//double DistanceTravelled {get; private set;}
}
public abstract AbstractWalker : IWalker
{
//Error:Cannot implement - but thats what I need
//protected double DistanceTravelled {get; private set}
//Error the set is not public and I dont want the property to be public
//public double DistanceTravelled { get;private set; }
//Compiles but not what i need at all since I want a protected
// property -a. and have it behave as readonly - b. but
// need it to be a part of the interface -c.
public double DistanceTravlled {get; set;}
}
我所有AbstractWalker的具体实例实际上都是IWalker类型。
实现我在代码段中指定的设计的最佳方法是什么?如果您想要私有设置,只需在接口中指定一个get:
public interface IWalker
{
double DistanceTravelled {get; }
}
IWalker的实现者可以指定私有集:
public class Walker : IWalker
{
public double DistanceTravelled { get; private set;}
}
如果需要私有设置,只需在接口中指定一个get:
public interface IWalker
{
double DistanceTravelled {get; }
}
IWalker的实现者可以指定私有集:
public class Walker : IWalker
{
public double DistanceTravelled { get; private set;}
}
你的设计有缺陷。接口是用来描述API的“公共契约”的,所以很奇怪您想要一个私有setter和一个受保护的实现 接口级别的私有setter没有任何意义如果您想要一个接口上只有getter的属性,请参阅markheaths answer 受保护的实现也很奇怪,因为通过实现接口,属性无论如何都是公共的。
如果需要更多帮助,您必须提供有关设计的更多信息。您的设计中存在缺陷。接口是用来描述API的“公共契约”的,所以很奇怪您想要一个私有setter和一个受保护的实现 接口级别的私有setter没有任何意义如果您想要一个接口上只有getter的属性,请参阅markheaths answer 受保护的实现也很奇怪,因为通过实现接口,属性无论如何都是公共的。
如果需要更多帮助,您必须提供有关设计的更多信息。是否有理由将其作为一个界面?抽象类基本上是一样的,只是你可以添加受保护的方法。发现了这个,可能会有帮助吗@迈克,是的,所以我可以选择对任何一个进行编程。有什么理由它需要成为一个接口吗?抽象类基本上是一样的,只是你可以添加受保护的方法。发现了这个,可能会有帮助吗@迈克,是的,所以我可以选择对任何一个进行编程。