如何在接口中定义属性 ( 积分: 50 )

  • 主题发起人 主题发起人 sunjunfeng3
  • 开始时间 开始时间
S

sunjunfeng3

Unregistered / Unconfirmed
GUEST, unregistred user!
定义了一接口
type
ICore = interface
function GetConfigInfo: EntityConfig;
procedure SetConfigInfo(vConfig:EntityConfig) ;
Property ConfigInfo:EntityConfig read GetConfigInfo write SetConfigInfo ;

end;
可是发现太长了,有没有办法不把属性调用 的方法定义出来,只定义属性如
Property ConfigInfo:EntityConfig
这是这样是不允许的
 
你可以把方法名称写的短点
然后定义属性的时候不就短了吗
 
难道定义属性必须要去属性使用的方法也写进去吗?c#在接口定义属性就可以不写方法
 
IFcControl = interface
['{8D7201CC-9BBC-445A-B3A7-3C1C55AE53F3}']
function GetText: string;
procedure SetText(const Value: string);
function GetControlType: TCtrlType;
function GetFcControl: TControl;
property ControlType: TCtrlType read GetControlType;
property FcControl: TControl read GetFcControl;
property Text: string read GetText write SetText;
end;
加个GUID就行了
 
楼上没有明白楼主的问题呀。
他是说想定义属性但不想在接口里定义属性的读写方法。
 
哦,知道了
C#不写方法不也写了Set和Get关键字么?有很大意义么?
 
我看了楼主的两个帖子,不是我说话不好听,感觉你对接口一知半解。
首先接口是对方法的集合,这里的属性和类里面的是不同的,它完全是用方法来实现的。

再一点如果你用的是D7 或者以前的版本,这里的接口和C#里面的有些不同。
如果看语言的差别仅仅着眼于 begin end read write 和 {} get set 这些不同的话,那我就不说什么了~
 
在c#里接口里定义属性,只需要写也属性名和类型就可以了
public string MyProperty
{ get;set;}
但在delphi里要定义一个同样的属性却要要把属性使用的方法也要定义下来,不然没法定义,因为read write写面要写东西哈,不写不让你过。
我想他们最大的差别在于,c#的属性支持匿名方法,属性的要做的操作可以直接写在{}对里,而delphi没有这样的特性,我并不是说他们有什么严重的后果,我只是有点懒惰,发现同样的功能DELPHI要多打几个字而已
 
呵呵,就好像,当年在学校上c语言课,拿c语言和pascal比,pascal里整型是integer,c语言是int,pascal里是begin..end,c语言是{},先进啊。。。
 
就是为了偷懒才用属性的,呵呵,不然全用方法了
属性其实就是方法的一个映射而已,讨论语法的不同没什么意义
想foreach,check或者lock这种语法的增加,讨论起来意义更大一些,我认为。。。
 
Delphi和C#不同.
Delphi属性读写方法形式和名字多变.C#的属性读写方法只能是Get/Set.编译器可以自动补上.Delphi则做不到这一点.
 
和Delphi相比,C#限制了属性读写方法命名,对代码质量,理解,编写都有好处,就是先进啊,
不过我还没学会C#呢
 
限定了读写名不一定就先进.
策略不同.灵活和规范的选择不同而已
 
后退
顶部