WriteOnly属性或方法?

Mic*_*cah 8 .net coding-style

是否存在特定情况,即WriteOnly属性比方法更有意义?方法方法对我来说更自然.

什么是正确的方法?

使用属性:

Public WriteOnly Property MyProperty As String
   Set(ByVal value as String)
      m_myField = value
   End Set
End Property
Run Code Online (Sandbox Code Playgroud)
public string MyProperty
{
   set{ m_myField = value;}
}
Run Code Online (Sandbox Code Playgroud)

使用方法:

Public Sub SetMyProperty(ByVal value as String)
   m_myField = value
End Sub
Run Code Online (Sandbox Code Playgroud)
public void SetMyProperty(string value)
{
   m_myField = value;
}
Run Code Online (Sandbox Code Playgroud)

编辑 只是为了澄清我指的是"WriteOnly"属性.

And*_*nan 11

我认为属性表示可以是只读或读/写的东西.只写属性的行为并不明显,因此我避免创建它们.

例如,在视图的下拉列表中设置值列表并访问所选项:

public interface IWidgetSelector
{
  void SetAvailableWidgets(string[] widgets);

  string SelectedWidget { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

比以下更有意义:

public interface IWidgetSelector
{
  string[] AvailableWidgets { set; }

  string SelectedWidget { get; set; }
}
Run Code Online (Sandbox Code Playgroud)


Mat*_*ell 11

对于它的价值,微软框架设计指南(如其FxCop工具中所体现的)不鼓励只写属性并标记它们作为API设计问题的存在,因为该方法不直观.