setter方法有必要有一个参数吗?通常,setter方法接受一个参数作为Object的某个属性的值.如果我想首先测试依赖于另一个布尔值的参数的有效性,如果是,则首先验证,否则只需设置值.
我通过ftp服务器从客户端获取值.有时这些文件包含垃圾值.例如,#3432838#9等电话号码.所以在我设置值之前,我需要删除那些垃圾字符.我可以在setter方法中做到吗?这是一种有效的方法吗?
提前谢谢!
编辑:
这是有效的:
public void setSomething(String strValue){
if(checkValidity(strValue)){
// set the value
} else {
// set the value to an empty string
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个WPF应用程序,我在代码隐藏中使用依赖属性,我想通过XAML声明设置.
例如
<l:SelectControl StateType="A" Text="Hello"/>
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中我有一个UserControl被调用的SelectControl,它有一个属性StateType,在它的setter中操作一些其他的属性.
为了帮助说明问题,我Text在示例中调用了另一个属性,继续阅读,我将进一步解释.
Codebehind摘录......
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(String), typeof(SelectControl));
public String Text
{
get { return (String)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public static readonly DependencyProperty StateTypeProperty = DependencyProperty.Register("StateType", typeof(String), typeof(SelectControl));
public String StateType
{
get { return (String)GetValue(StateTypeProperty) }
set
{
switch (value)
{
case "A":
AnotherPropertyBoolean = true;
break;
case "B":
AnotherPropertyBoolean = false;
break;
default:
// this is only …Run Code Online (Sandbox Code Playgroud) 我是Objective-C的新手,并试图弄清楚维护类的rep不变量的最佳方法是什么,因为异常并不是实现它们的适当方式.一个很好的例子就是在这个Fraction类中,作为Kochan 在Objective-C中编程的一个例子,它有这个setter方法:
-(void) setDenominator: (int) d {
self.denominator = d;
}
Run Code Online (Sandbox Code Playgroud)
所以说你的代表不变的要求的一部分self.denominator != 0.例如,在Java中,强制执行该不变量的最直接的方法是抛出IllegalArgumentExceptionif 0,但在Objective-C中没有意义.另一种方法是添加一个NSError**指针参数来报告问题,但这看起来既像是过度杀戮又喜欢它不适合抽象的本质 - 不像数据库连接,我们不期望零在正常使用中发生的分母分数.那么这里最干净的解决方案是什么?返回整数错误代码?还有别的我想念的?
当我快速修复eclipse中的一个字段时,我可以为该字段生成一个getter和setter.这也使得字段私有并随后转换所有源文件中此字段的所有访问权以使用getter和setter.单个字段就是这种情况.
但是,如果我执行contextmenu> Source> Generate Getters and Setters ...(当您想要影响所有字段时使用的选项),它不会进行前面提到的更改,并且对源代码中的字段的所有访问都保持不变.
我忽略了什么吗?
我正在代码中创建触发器,我正在尝试将setter的值绑定到后面代码中创建的动态资源,这样我就可以更新资源,并且仍然可以更新setter的值.我就此而已
SolidColorBrush brush = Brushes.Red;
Resources.Add("NewBrush",brush);
Setter setter = new Setter();
setter.Property = Control.BackgroundProperty;
Run Code Online (Sandbox Code Playgroud)
但我不确定如何将setter的值绑定到创建的动态资源.我不能简单地在XAML中创建资源,因为资源需要动态创建.如何将Setter的值绑定到动态资源,因此更改资源将改变setter的值.
更多信息要澄清.这都是在代码后面完成的,因为一切都是动态生成的.触发器,设置器,格式化,控件都是基于XML结构创建的.
我有一个嵌套的子类,其公共属性与私有setter.在父类中,我能够使用Automapper映射到子类,并且正在设置私有setter的值.我读过的所有内容都指向Automapper不支持这一点,并要求子类中的自定义构造函数来填充私有setter.
当前版本是否使用反射或其他东西来映射私有的setter?安装程序肯定是私有的,因为在父类中我无法设置Child.Property但在同一个地方Mapper.Map能够设置属性.
我需要在C#setter中进行一次小检查 - 检查属性是否为空字符串.现在我最终得到了这样的结构:
private string property;
public string Property
{
get
{
return property;
}
set
{
if (value.IsNotEmpty())
{
property = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
代替
public string Property { get; set; }
Run Code Online (Sandbox Code Playgroud)
6行代替1.有没有办法插入逻辑,但保持它浓缩和优雅?
DDD教我们像我们的真实世界原型一样构建我们的类.
所以不要使用setter
job = new Job
job.person = person
job.since = time.Now()
job.title = title
Run Code Online (Sandbox Code Playgroud)
我们在聚合根中定义了命名良好的方法
job = person.promote(title, /** since=time.Now() **/)
Run Code Online (Sandbox Code Playgroud)
现在是棘手的部分
假设我们有一个title人工智能的用户界面,他/她通过HTML表单输入新内容并制作一个类似"prgrammer"的拼写错误(当然在实际应用中有一个选择列表,但这里我们有一个文本输入),或选择错误的日期(如今天默认)
现在我们遇到了问题.现实世界中没有拼写错误.我们的John Doe绝对是一名"程序员"而且绝不是"程序员"
我们如何在域模型中解决这个错误?
我们Person刚刚promote,demote,fire,等方法,反映了人力资源领域模型.
我们可以稍微欺骗并Job直接更改记录,但现在我们有一个Job.setTitle方法,它不反映我们的域模型,而且,setter是邪恶的,你知道.
这可能看起来有点"学术性",但当我尝试为复杂的应用程序构建一个好的域模型时,这真的让我感到困惑
我试图理解JS上的getter和setter,我似乎无法通过这个错误.任何人都可以提供任何有关我为什么会收到此错误的见解?
var book = {
year: 2004,
edition:1,
get newYear(){
return "Hello, it's " + this.year;
},
set newYear(y, e){
this.year = y;
this.edition = e;
}
};
Run Code Online (Sandbox Code Playgroud)
Uncaught SyntaxError:Setter必须只有一个形式参数
我是一名试图学习C++的Java开发人员.是否可以在构造函数中使用setter以重用setter提供的健全性检查?
例如:
#include <stdexcept>
using namespace std;
class Test {
private:
int foo;
void setFoo(int foo) {
if (foo < 42) {
throw invalid_argument{"Foo < 42."};
}
this->foo = foo;
}
public:
Test(int foo) {
setFoo(foo);
};
};
Run Code Online (Sandbox Code Playgroud) setter ×10
c# ×2
getter ×2
java ×2
wpf ×2
.net ×1
automapper ×1
binding ×1
c++ ×1
constructor ×1
eclipse ×1
invariants ×1
javascript ×1
objective-c ×1
oop ×1
private ×1
xaml ×1