summaryrefslogtreecommitdiff
path: root/cpp/src/slice2vb/Gen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2vb/Gen.cpp')
-rwxr-xr-xcpp/src/slice2vb/Gen.cpp16
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();