diff options
Diffstat (limited to 'cpp/src/slice2vb/Gen.cpp')
-rwxr-xr-x | cpp/src/slice2vb/Gen.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/cpp/src/slice2vb/Gen.cpp b/cpp/src/slice2vb/Gen.cpp index 2568b0283f2..e9007cb2130 100755 --- a/cpp/src/slice2vb/Gen.cpp +++ b/cpp/src/slice2vb/Gen.cpp @@ -3255,11 +3255,16 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p) int baseTypes = 0; bool isClass = false; bool propertyMapping = false; + bool isValue = false; ContainedPtr cont = ContainedPtr::dynamicCast(p->container()); assert(cont); - if(StructPtr::dynamicCast(cont) && cont->hasMetaData("clr:class")) + if(StructPtr::dynamicCast(cont)) { - baseTypes = DotNet::ICloneable; + isValue = isValueType(StructPtr::dynamicCast(cont)); + if(!isValue || cont->hasMetaData("clr:class")) + { + baseTypes = DotNet::ICloneable; + } if(cont->hasMetaData("clr:property")) { propertyMapping = true; @@ -3297,7 +3302,12 @@ Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p) return; } - _out << nl << "Public Overridable Property " << propertyName << " As " << type; + _out << nl << "Public"; + if(!isValue) + { + _out << " Overridable"; + } + _out << " Property " << propertyName << " As " << type; _out.inc(); _out << nl << "Get"; _out.inc(); |