in packages/jsii-pacmak/lib/targets/dotnet/dotnetgenerator.ts [691:740]
private isMemberDefinedOnAncestor(
cls: spec.ClassType,
member: spec.Property | spec.Method,
): boolean {
if (member as spec.Method) {
const objectMethods = ['ToString', 'GetHashCode', 'Equals'];
// Methods defined on the Object class should be overridden, return true;
if (
objectMethods.includes(this.nameutils.convertMethodName(member.name))
) {
return true;
}
}
const base = cls.base;
if (base) {
const baseType = this.findType(base) as spec.ClassType;
if (member as spec.Property) {
if (baseType.properties) {
if (
baseType.properties.filter(
(property) => property.name === member.name,
).length > 0
) {
// property found in base parent
return true;
}
}
return this.isMemberDefinedOnAncestor(baseType, member);
} else if (member as spec.Method) {
if (baseType.methods) {
const myMethod = member as spec.Method;
// If the name, parameters and returns are similar then it is the same method in .NET
for (const m of baseType.methods) {
if (
m.name === myMethod.name &&
m.parameters === myMethod.parameters &&
m.returns === myMethod.returns
) {
return true;
}
}
}
return this.isMemberDefinedOnAncestor(baseType, member);
}
return false;
}
return false;
}