我创建了一个实现接口的抽象类。这个抽象类将是几个需要填充该接口属性的具体类的基础。
CLR 合规性警告会在前两个示例中弹出。我了解它们所代表的含义,这里有几个问题涵盖了它们。
为了使字段不同,我可以添加一个尾随下划线。它被编译器接受。这是一个正确的风格选择。我认为它不是很突出,可能是代码味道。但我可能只是不习惯。
或者我创建一个定义属性字段的抽象祖先是错误的?这个想法当然是为了节省重复工作并帮助强制执行标准实现,但我可以看到,当它开始为这些“隐藏”字段分配值时,它可能在后代中具有自己的味道。
namespace MyLittleCompany.Widgety
{
public abstract class MlcWidgetInformation : IMlcWidgetInformation
{
//Compiler complains of Non-CLR Compliance (case difference only)
protected int sides; //Number of sides for this widget
//Compiler complains of Non-CLR Compliance (non-private name with underscore
// is not compliant)
protected int _hooks; //Number of hooks on this widget
//Compiler is happy with a trailing underscore
protected int feathers_; //Number of feathers on this widget
// Interface items
public Sides { get { return sides; } }
public Hooks { get { return _hooks; } }
public Feathers { get { return feathers_; } }
}
}
=====================================
namespace MyLittleCompany.Widgety
{
public class SmallWidgetInformation : MlcWidgetInformation
{
public SmallWidgetInformation()
{
// Is this a smell? As in "What are these things?"
sides = 6;
_hooks = 3;
feathers_ = 1;
}
}
}