是否可以以私有方式设置属性的方式创建/设计,但只暴露将属性提供给消费者的能力?
我通过使基类包装器成为具体类包装器的成员来解决多重继承属性。我宁愿不允许某人在其自己的属性集中写入基类实例。但我似乎无法排除set
并设置基本属性,而我无法将set
设为私有。
有什么想法吗?
代码:
ConcreteClassWrapper(); // here I want to setup base class, i.e. give it a pointer to the actual C++ model I'm working with.
property BaseClassWrapper^ BaseClass
{
BaseClassWrapper^ get() { return baseClass; }
// I want to avoid giving my consumers the ability to set this property.
void set(BaseClassWrapper^ value) { baseClass= value; }
}
private:
BaseClassWrapper^ baseClass; // Having a base class wrapper makes it easier on code writing.. i.e. I don't need to implement interfaces. I just want to use my C++ code in C# Microsoft GOD!!!
编辑:
我是个白痴,我可以访问私人会员......
答案 0 :(得分:0)
这只是一个答案......仍然想知道私人制定者为什么不这样做?一件事
我只需要访问我的ConcreteClassWrapper
的私有成员并在那里设置基类。然后,我可以移除set
属性中的BaseClassWrapper
。
答案 1 :(得分:0)
你试过这个:
property BaseClassWrapper^ BaseClass
{
BaseClassWrapper^ get() { return baseClass; }
private:
void set(BaseClassWrapper^ value) { baseClass= value; }
}
这是您在属性中编写私有setter的方式。对于C ++ / CX,property关键字只是一个新的关键字,允许C ++ / CX编译器生成一些C ++代码,因此private,public,protected之类的语法是相同的。