在基类中我有这个属性:
public virtual string Text
{
get { return text; }
}
Run Code Online (Sandbox Code Playgroud)
我想覆盖它并返回一个不同的文本,但我也希望能够设置文本,所以我这样做:
public override string Text
{
get { return differentText; }
set { differentText = value; }
}
Run Code Online (Sandbox Code Playgroud)
然而,这不起作用.我得到一个红色的波浪形,set说我无法覆盖,因为它没有设置访问器.为什么这是个问题?我该怎么办?
我需要类似于ReadToEnd或ReadAllBytes的东西来使用MappedViewAccessor读取MemoryMappedFile的所有内容,如果我不知道它的大小,我该怎么办呢?
我已经搜索过了,我已经看到了这个问题,但这不是我要找的东西:
编辑:
有一个问题,(int)stream.Length没有给我正确的长度,而是给出了内部缓冲区的大小!我需要刷新这个问题,因为它非常紧迫.
.Net 4.5将PropertyInfo.GetMethod作为PropertyInfo类的属性.它在做什么不同于PropertyInfo.GetGetMethod方法吗?文档页面几乎为空白.我能找到的唯一区别是GetGetMethod默认情况下仅返回公共getter,而GetMethod返回甚至非公共getter(同样通过它实现GetGetMethod(true)).
类似地,.NET 4.5中有GetSetMethod方法和SetMethod属性.它为什么在.NET中引入?
我最近了解到,在Python 3中,为了最小化类的访问器方法的数量,您可以使用词典基本上只有一组访问器方法,如下所示:
def __init__(self, **kwargs):
self.properties = kwargs
def get_properties(self):
return self.properties
def get_property(self, key):
return self.properties.get(key, None)
Run Code Online (Sandbox Code Playgroud)
这似乎非常有用,我想在Java中应用类似的东西.我一直在研究可能具有多个属性的应用程序,创建和跟踪所有访问器方法可能很痛苦.是否有类似的策略我可以用于Java?
我试过这个.
@lombok.Getter
@lombok.Setter
@lombok.Accessors(chain = true, fluent = true)
private String prop;
Run Code Online (Sandbox Code Playgroud)
并@Accessor采取了优先级和getProp并setProp没有产生.
我怎样才能让它产生这个?
public String getProp() {
return prop;
}
public String prop() {
//return prop;
return getProp(); // wow factor
}
public void setProp(String prop) {
this.prop = prop;
}
public Some prop(String prop) {
//this.prop = prop;
setProp(prop); // wow factor, again
return this;
}
Run Code Online (Sandbox Code Playgroud) 我想了解如何设置属性(访问器)的参数.
我从Kal日历的例子中获取了以下代码.
// Holiday.h
@interface Holiday : NSObject
{
NSDate *date;
NSString *name;
NSString *country;
}
@property (nonatomic, retain, readonly) NSDate *date;
@property (nonatomic, retain, readonly) NSString *name;
@property (nonatomic, retain, readonly) NSString *country;
- (id)initWithName:(NSString *)name country:(NSString *)country date:(NSDate *)date;
@end
// Holiday.m
#import "Holiday.h"
@implementation Holiday
@synthesize date, name, country;
- (id)initWithName:(NSString *)aName country:(NSString *)aCountry date:(NSDate *)aDate
{
if ((self = [super init])) {
name = [aName copy];
country = [aCountry copy];
date = [aDate retain];
}
return …Run Code Online (Sandbox Code Playgroud) 有时我需要暴露一些班级成员.例如,在以下示例中class Mechanic可能需要直接访问Engine组件.我已多次读过所有字段都应该由mutator(accessor)方法访问,原因有几个.但是在提供非const引用getter时是否有任何优势:
class Car
{
public:
Engine & engine()
{
return m_engine;
}
//as a consequence you will also need to provide const version
const Engine & engine() const
{
return m_engine;
}
private:
Engine m_engine;
}
Run Code Online (Sandbox Code Playgroud)
简单地将引擎组件公开:
class Car
{
public:
Engine engine;
}
Run Code Online (Sandbox Code Playgroud)
您也可以替换public使用protected,如果你不喜欢这样的例子.在现实生活中,当涉及到System.in或者,你在Java中有类似的东西System.out.看起来,要完全符合某些人的说法,你需要执行类似的调用System.getInstance().getOut().println("hello world").在这种情况下,除了很多官僚代码外,我没有看到任何好处.
我的表格中有3个字段,不在我的数据库中:opening_type,opening_hours,opening_minutes.我想用这3个字段更新主要属性"打开"(在数据库中).
我尝试了很多不起作用的东西.
其实我有:
attr_accessor :opening_type, :opening_hours, :opening_minutes
def opening_type=(opening_type)
end
def opening_type
opening_type = opening.split("-")[0] if !opening.blank?
end
def opening_hours=(opening_hours)
end
def opening_hours
opening_hours = opening.split("-")[1] if !opening.blank?
end
def opening_minutes=(opening_minutes)
end
def opening_minutes
opening_minutes = opening.split("-")[2] if !opening.blank?
end
Run Code Online (Sandbox Code Playgroud)
我尝试添加类似的东西:
def opening=(opening)
logger.info "WRITE"
if !opening_type.blank? and !opening_hours.blank? and opening_minutes.blank?
opening = ""
opening << opening_type if !opening_type.blank?
opening << "-"
opening << opening_hours if !opening_hours.blank?
opening << "-"
opening << opening_minutes if !opening_minutes.blank?
end
write_attribute(:opening, opening)
end
def …Run Code Online (Sandbox Code Playgroud) 前言注意: 为了便于讨论,请暂时忽略这样一个事实:使用Class :: Accessor可以实现相同的目的,甚至只需使用Moose(在考虑代码可读性时可能会有更好的结果)和可维护性).
关于面向对象的Perl,本书Programming Perl讨论了使用闭包生成存取方法的能力.例如,这是一段有效的代码:
#!perl
use v5.12;
use warnings;
# at run-time
package Person1;
my @attributes = qw/name age address/;
for my $att ( @attributes )
{
my $accessor = __PACKAGE__ . "::$att";
no strict 'refs'; # allow symbolic refs to typeglob
*$accessor = sub {
my $self = shift;
$self->{$att} = shift if @_;
return $self->{$att};
};
}
sub new { bless {}, shift }
package main;
use Data::Dumper;
my $dude …Run Code Online (Sandbox Code Playgroud) 我正在修改 ReactJS 组件。我添加了一个 react-table 来获取分页,效果很好。但是表中的一列需要调用也在此组件中的函数,因此它可以根据该记录的内容呈现链接。(有些结果会呈现链接,有些则不会。)当我在列的访问器属性中列出该函数时,它会返回该函数的一些值,但不是全部。因此,链接返回为:
localhost:3000/view/c/IDnumber/undefined.
Run Code Online (Sandbox Code Playgroud)
IDnumber和query都应该返回,但是query参数是“undefined”。
我试过在访问器中列出函数,如:
getSerialNo(hit,query)
Run Code Online (Sandbox Code Playgroud)
但后来我得到“命中未定义”。我在这个网站和其他网站上搜索过以找到解决方案。
该列看起来像:
{id:'serialno',
Header: "Serial #",
accessor: getSerialNo
}
Run Code Online (Sandbox Code Playgroud)
部分功能如下所示:
const getSerialNo = (hit, query) => {
const linkAs = '/view/c/${hit._id}/${query}'
return <Link href={link} as={linkAs}><a target="_blank">{serialNo}
</a></Link>
Run Code Online (Sandbox Code Playgroud)
我想取回一个实际包含查询的链接,例如:
localhost:3000/view/c/IDnumber/query
Run Code Online (Sandbox Code Playgroud) accessor ×10
.net ×2
c# ×2
java ×2
oop ×2
properties ×2
.net-4.5 ×1
c++ ×1
closures ×1
dictionary ×1
getter ×1
inheritance ×1
ipc ×1
iphone ×1
lombok ×1
module ×1
mutators ×1
objective-c ×1
perl ×1
propertyinfo ×1
python ×1
react-table ×1
reactjs ×1