[DispId(8)]
DateTime MaxDate { [DispId(8)] get; [DispId(8)] set; }
^ get和set有不同的DispIds,因为它们有两个不同的功能吗?或者我应该只装饰一次方法名称?
谢谢,
答案 0 :(得分:4)
不,属性应该只有一个[DispId],应用于属性声明。客户端代码通过在IDispatch::Invoke()调用中为wFlags参数传递DISPATCH_PROPERTYGET或DISPATCH_PROPERTYPUT来指示是否要调用getter或setter。
在getter和setter上重复[DispId]并不是完全错误的,并且Tlbexp.exe支持这一点,以这种方式做这件事并没有多大意义。使用不同的 dispid在技术上是可行的,但几乎可以保证使客户端代码失败,因为它不会期望。