diff --git a/packages/jsii-dotnet-runtime-test/test/Amazon.JSII.Runtime.IntegrationTests/ComplianceTests.cs b/packages/jsii-dotnet-runtime-test/test/Amazon.JSII.Runtime.IntegrationTests/ComplianceTests.cs
index d0207e350e..c37e0af5bd 100644
--- a/packages/jsii-dotnet-runtime-test/test/Amazon.JSII.Runtime.IntegrationTests/ComplianceTests.cs
+++ b/packages/jsii-dotnet-runtime-test/test/Amazon.JSII.Runtime.IntegrationTests/ComplianceTests.cs
@@ -495,7 +495,7 @@ public override string TheProperty
}
}
- class InterfaceWithProperties : DeputyBase, IIInterfaceWithProperties
+ class InterfaceWithProperties : DeputyBase, IInterfaceWithProperties
{
string _x;
@@ -630,10 +630,10 @@ public void SyncOverrides_CallsDoubleAsyncPropertySetterFails()
[Fact(DisplayName = Prefix + nameof(TestInterfaces))]
public void TestInterfaces()
{
- IIFriendly friendly;
- IIFriendlier friendlier;
- IIRandomNumberGenerator randomNumberGenerator;
- IIFriendlyRandomGenerator friendlyRandomGenerator;
+ IFriendly friendly;
+ IFriendlier friendlier;
+ IRandomNumberGenerator randomNumberGenerator;
+ IFriendlyRandomGenerator friendlyRandomGenerator;
Add add = new Add(new Number(10), new Number(20));
friendly = add;
@@ -700,10 +700,10 @@ public void TestNativeObjectsWithInterfaces()
public void TestLiteralInterface()
{
JSObjectLiteralForInterface obj = new JSObjectLiteralForInterface();
- IIFriendly friendly = obj.GiveMeFriendly();
+ IFriendly friendly = obj.GiveMeFriendly();
Assert.Equal("I am literally friendly!", friendly.Hello());
- IIFriendlyRandomGenerator gen = obj.GiveMeFriendlyGenerator();
+ IFriendlyRandomGenerator gen = obj.GiveMeFriendlyGenerator();
Assert.Equal("giveMeFriendlyGenerator", gen.Hello());
Assert.Equal((double) 42, gen.Next());
}
@@ -1014,7 +1014,7 @@ public override String ConsumePartiallyInitializedThis(ConstructorPassesThisOut
return "OK";
}
}
- class NumberReturner : DeputyBase, IIReturnsNumber
+ class NumberReturner : DeputyBase, IReturnsNumber
{
public NumberReturner(double number)
{
@@ -1025,12 +1025,12 @@ public NumberReturner(double number)
public Number NumberProp { get; }
[JsiiMethod(name: "obtainNumber", returnsJson: "{\"type\":{\"fqn\":\"@scope/jsii-calc-lib.IDoublable\"}}", isOverride: true)]
- public IIDoublable ObtainNumber()
+ public IDoublable ObtainNumber()
{
return new Doublable(this.NumberProp);
}
- class Doublable : DeputyBase, IIDoublable
+ class Doublable : DeputyBase, IDoublable
{
public Doublable(Number number)
{
@@ -1130,7 +1130,7 @@ public override string TheProperty
public string AnotherTheProperty { get; set; }
}
- class PureNativeFriendlyRandom : DeputyBase, IIFriendlyRandomGenerator
+ class PureNativeFriendlyRandom : DeputyBase, IFriendlyRandomGenerator
{
int _nextNumber = 1000;
@@ -1149,7 +1149,7 @@ public string Hello()
}
}
- class SubclassNativeFriendlyRandom : Number, IIFriendly, IIRandomNumberGenerator
+ class SubclassNativeFriendlyRandom : Number, IFriendly, IRandomNumberGenerator
{
int _nextNumber;
diff --git a/packages/jsii-pacmak/lib/targets/dotnet/dotnetgenerator.ts b/packages/jsii-pacmak/lib/targets/dotnet/dotnetgenerator.ts
index 390e356b4e..f7962c22eb 100644
--- a/packages/jsii-pacmak/lib/targets/dotnet/dotnetgenerator.ts
+++ b/packages/jsii-pacmak/lib/targets/dotnet/dotnetgenerator.ts
@@ -121,7 +121,7 @@ export class DotNetGenerator extends Generator {
protected onBeginInterface(ifc: spec.InterfaceType) {
const implementations = this.typeresolver.resolveImplementedInterfaces(ifc);
- const interfaceName = this.nameutils.convertInterfaceName(ifc.name);
+ const interfaceName = this.nameutils.convertInterfaceName(ifc);
const namespace = ifc.namespace ? `${this.assembly.targets!.dotnet!.namespace}.${ifc.namespace}` : this.assembly.targets!.dotnet!.namespace;
this.openFileIfNeeded(interfaceName, namespace, this.isNested(ifc));
@@ -137,7 +137,7 @@ export class DotNetGenerator extends Generator {
}
protected onEndInterface(ifc: spec.InterfaceType) {
- const interfaceName = this.nameutils.convertInterfaceName(ifc.name);
+ const interfaceName = this.nameutils.convertInterfaceName(ifc);
this.code.closeBlock();
this.closeFileIfNeeded(interfaceName, this.isNested(ifc));
diff --git a/packages/jsii-pacmak/lib/targets/dotnet/dotnetruntimegenerator.ts b/packages/jsii-pacmak/lib/targets/dotnet/dotnetruntimegenerator.ts
index 5d98eb83d0..6f35f2fc35 100644
--- a/packages/jsii-pacmak/lib/targets/dotnet/dotnetruntimegenerator.ts
+++ b/packages/jsii-pacmak/lib/targets/dotnet/dotnetruntimegenerator.ts
@@ -25,7 +25,7 @@ export class DotNetRuntimeGenerator {
*/
public emitAttributesForInterface(ifc: spec.InterfaceType) {
const jsiiAttribute =
- `[JsiiInterface(nativeType: typeof(${this.nameutils.convertInterfaceName(ifc.name)}), fullyQualifiedName: "${ifc.fqn}")]`;
+ `[JsiiInterface(nativeType: typeof(${this.nameutils.convertInterfaceName(ifc)}), fullyQualifiedName: "${ifc.fqn}")]`;
this.code.line(jsiiAttribute);
this.emitDeprecatedAttributeIfNecessary(ifc);
}
@@ -104,7 +104,7 @@ export class DotNetRuntimeGenerator {
* Ex: [JsiiTypeProxy(nativeType: typeof(IVeryBaseProps), fullyQualifiedName: "@scope/jsii-calc-base-of-base.VeryBaseProps")]
*/
public emitAttributesForInterfaceProxy(ifc: spec.ClassType | spec.InterfaceType): void {
- const name = ifc.kind === spec.TypeKind.Interface ? this.nameutils.convertInterfaceName(ifc.name)
+ const name = ifc.kind === spec.TypeKind.Interface ? this.nameutils.convertInterfaceName(ifc)
: this.typeresolver.toNativeFqn(ifc.fqn);
this.code.line(`[JsiiTypeProxy(nativeType: typeof(${name}), fullyQualifiedName: \"${ifc.fqn}\")]`);
this.emitDeprecatedAttributeIfNecessary(ifc);
diff --git a/packages/jsii-pacmak/lib/targets/dotnet/dotnettyperesolver.ts b/packages/jsii-pacmak/lib/targets/dotnet/dotnettyperesolver.ts
index df115a1461..c8b5661dea 100644
--- a/packages/jsii-pacmak/lib/targets/dotnet/dotnettyperesolver.ts
+++ b/packages/jsii-pacmak/lib/targets/dotnet/dotnettyperesolver.ts
@@ -31,7 +31,7 @@ export class DotNetTypeResolver {
let typeName: string = '';
switch (type.kind) {
case spec.TypeKind.Interface:
- typeName = this.nameutils.convertInterfaceName(type.name);
+ typeName = this.nameutils.convertInterfaceName(type);
break;
case spec.TypeKind.Class:
typeName = this.nameutils.convertClassName(type as spec.ClassType);
diff --git a/packages/jsii-pacmak/lib/targets/dotnet/nameutils.ts b/packages/jsii-pacmak/lib/targets/dotnet/nameutils.ts
index 032e64c4fe..77722768a0 100644
--- a/packages/jsii-pacmak/lib/targets/dotnet/nameutils.ts
+++ b/packages/jsii-pacmak/lib/targets/dotnet/nameutils.ts
@@ -31,12 +31,17 @@ export class DotNetNameUtils {
return this.capitalizeWord(original);
}
- public convertInterfaceName(original: string) {
- if (this.isInvalidName(original)) {
- throw new Error(`Invalid interface name: ${original}`);
+ public convertInterfaceName(original: spec.InterfaceType) {
+ if (this.isInvalidName(original.name)) {
+ throw new Error(`Invalid interface name: ${original.name}`);
+ }
+ if (original.datatype) {
+ // Datatype interfaces need to be prefixed by I so that they don't clash with the prop object implementation
+ return 'I' + this.capitalizeWord(original.name);
+ } else {
+ // Non datatype interfaces are guaranteed by JSII to be prefixed by I already
+ return this.capitalizeWord(original.name);
}
- const capitalizedName = this.capitalizeWord(original);
- return 'I' + capitalizedName;
}
public convertClassName(original: spec.ClassType) {
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IBaseInterface.cs b/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IBaseInterface.cs
new file mode 100644
index 0000000000..b54ad05208
--- /dev/null
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IBaseInterface.cs
@@ -0,0 +1,11 @@
+using Amazon.JSII.Runtime.Deputy;
+
+namespace Amazon.JSII.Tests.CalculatorNamespace.BaseNamespace
+{
+ [JsiiInterface(nativeType: typeof(IBaseInterface), fullyQualifiedName: "@scope/jsii-calc-base.IBaseInterface")]
+ public interface IBaseInterface : Amazon.JSII.Tests.CalculatorNamespace.BaseOfBaseNamespace.IVeryBaseInterface
+ {
+ [JsiiMethod(name: "bar")]
+ void Bar();
+ }
+}
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IBaseInterfaceProxy.cs b/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IBaseInterfaceProxy.cs
index 6cd231e3a5..d0903003af 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IBaseInterfaceProxy.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IBaseInterfaceProxy.cs
@@ -2,8 +2,8 @@
namespace Amazon.JSII.Tests.CalculatorNamespace.BaseNamespace
{
- [JsiiTypeProxy(nativeType: typeof(IIBaseInterface), fullyQualifiedName: "@scope/jsii-calc-base.IBaseInterface")]
- internal sealed class IBaseInterfaceProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.BaseNamespace.IIBaseInterface
+ [JsiiTypeProxy(nativeType: typeof(IBaseInterface), fullyQualifiedName: "@scope/jsii-calc-base.IBaseInterface")]
+ internal sealed class IBaseInterfaceProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.BaseNamespace.IBaseInterface
{
private IBaseInterfaceProxy(ByRefValue reference): base(reference)
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IIBaseInterface.cs b/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IIBaseInterface.cs
deleted file mode 100644
index 274d9497d3..0000000000
--- a/packages/jsii-pacmak/test/expected.jsii-calc-base/dotnet/Amazon.JSII.Tests.CalculatorPackageId.BasePackageId/Amazon/JSII/Tests/CalculatorNamespace/BaseNamespace/IIBaseInterface.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using Amazon.JSII.Runtime.Deputy;
-
-namespace Amazon.JSII.Tests.CalculatorNamespace.BaseNamespace
-{
- [JsiiInterface(nativeType: typeof(IIBaseInterface), fullyQualifiedName: "@scope/jsii-calc-base.IBaseInterface")]
- public interface IIBaseInterface : Amazon.JSII.Tests.CalculatorNamespace.BaseOfBaseNamespace.IIVeryBaseInterface
- {
- [JsiiMethod(name: "bar")]
- void Bar();
- }
-}
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIDoublable.cs b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IDoublable.cs
similarity index 78%
rename from packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIDoublable.cs
rename to packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IDoublable.cs
index 9e2681f4ea..72681bc5b7 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIDoublable.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IDoublable.cs
@@ -6,9 +6,9 @@ namespace Amazon.JSII.Tests.CalculatorNamespace.LibNamespace
///
/// stability: Deprecated
///
- [JsiiInterface(nativeType: typeof(IIDoublable), fullyQualifiedName: "@scope/jsii-calc-lib.IDoublable")]
+ [JsiiInterface(nativeType: typeof(IDoublable), fullyQualifiedName: "@scope/jsii-calc-lib.IDoublable")]
[System.Obsolete()]
- public interface IIDoublable
+ public interface IDoublable
{
///
/// stability: Deprecated
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IDoublableProxy.cs b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IDoublableProxy.cs
index 6800b339a7..8072c56d22 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IDoublableProxy.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IDoublableProxy.cs
@@ -6,9 +6,9 @@ namespace Amazon.JSII.Tests.CalculatorNamespace.LibNamespace
///
/// stability: Deprecated
///
- [JsiiTypeProxy(nativeType: typeof(IIDoublable), fullyQualifiedName: "@scope/jsii-calc-lib.IDoublable")]
+ [JsiiTypeProxy(nativeType: typeof(IDoublable), fullyQualifiedName: "@scope/jsii-calc-lib.IDoublable")]
[System.Obsolete()]
- internal sealed class IDoublableProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IIDoublable
+ internal sealed class IDoublableProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IDoublable
{
private IDoublableProxy(ByRefValue reference): base(reference)
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIFriendly.cs b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IFriendly.cs
similarity index 83%
rename from packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIFriendly.cs
rename to packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IFriendly.cs
index 6adbb6085a..7fe15c625b 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIFriendly.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IFriendly.cs
@@ -8,9 +8,9 @@ namespace Amazon.JSII.Tests.CalculatorNamespace.LibNamespace
/// a "hello" or "goodbye" blessing and they will respond back in a fun and friendly manner.
/// stability: Deprecated
///
- [JsiiInterface(nativeType: typeof(IIFriendly), fullyQualifiedName: "@scope/jsii-calc-lib.IFriendly")]
+ [JsiiInterface(nativeType: typeof(IFriendly), fullyQualifiedName: "@scope/jsii-calc-lib.IFriendly")]
[System.Obsolete()]
- public interface IIFriendly
+ public interface IFriendly
{
/// Say hello!
///
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IFriendlyProxy.cs b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IFriendlyProxy.cs
index 892ea3c811..3b5885c882 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IFriendlyProxy.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IFriendlyProxy.cs
@@ -8,9 +8,9 @@ namespace Amazon.JSII.Tests.CalculatorNamespace.LibNamespace
/// a "hello" or "goodbye" blessing and they will respond back in a fun and friendly manner.
/// stability: Deprecated
///
- [JsiiTypeProxy(nativeType: typeof(IIFriendly), fullyQualifiedName: "@scope/jsii-calc-lib.IFriendly")]
+ [JsiiTypeProxy(nativeType: typeof(IFriendly), fullyQualifiedName: "@scope/jsii-calc-lib.IFriendly")]
[System.Obsolete()]
- internal sealed class IFriendlyProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IIFriendly
+ internal sealed class IFriendlyProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IFriendly
{
private IFriendlyProxy(ByRefValue reference): base(reference)
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIThreeLevelsInterface.cs b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IThreeLevelsInterface.cs
similarity index 69%
rename from packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIThreeLevelsInterface.cs
rename to packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IThreeLevelsInterface.cs
index ef9443e530..fb892ed8c5 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IIThreeLevelsInterface.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IThreeLevelsInterface.cs
@@ -8,9 +8,9 @@ namespace Amazon.JSII.Tests.CalculatorNamespace.LibNamespace
/// far enough up the tree.
/// stability: Deprecated
///
- [JsiiInterface(nativeType: typeof(IIThreeLevelsInterface), fullyQualifiedName: "@scope/jsii-calc-lib.IThreeLevelsInterface")]
+ [JsiiInterface(nativeType: typeof(IThreeLevelsInterface), fullyQualifiedName: "@scope/jsii-calc-lib.IThreeLevelsInterface")]
[System.Obsolete()]
- public interface IIThreeLevelsInterface : Amazon.JSII.Tests.CalculatorNamespace.BaseNamespace.IIBaseInterface
+ public interface IThreeLevelsInterface : Amazon.JSII.Tests.CalculatorNamespace.BaseNamespace.IBaseInterface
{
///
/// stability: Deprecated
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IThreeLevelsInterfaceProxy.cs b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IThreeLevelsInterfaceProxy.cs
index 44d5ba9fec..578dc1922b 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IThreeLevelsInterfaceProxy.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/IThreeLevelsInterfaceProxy.cs
@@ -8,9 +8,9 @@ namespace Amazon.JSII.Tests.CalculatorNamespace.LibNamespace
/// far enough up the tree.
/// stability: Deprecated
///
- [JsiiTypeProxy(nativeType: typeof(IIThreeLevelsInterface), fullyQualifiedName: "@scope/jsii-calc-lib.IThreeLevelsInterface")]
+ [JsiiTypeProxy(nativeType: typeof(IThreeLevelsInterface), fullyQualifiedName: "@scope/jsii-calc-lib.IThreeLevelsInterface")]
[System.Obsolete()]
- internal sealed class IThreeLevelsInterfaceProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IIThreeLevelsInterface
+ internal sealed class IThreeLevelsInterfaceProxy : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IThreeLevelsInterface
{
private IThreeLevelsInterfaceProxy(ByRefValue reference): base(reference)
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/Number.cs b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/Number.cs
index 1e1c4c9926..7c801f0ff0 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/Number.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc-lib/dotnet/Amazon.JSII.Tests.CalculatorPackageId.LibPackageId/Amazon/JSII/Tests/CalculatorNamespace/LibNamespace/Number.cs
@@ -8,7 +8,7 @@ namespace Amazon.JSII.Tests.CalculatorNamespace.LibNamespace
///
[JsiiClass(nativeType: typeof(Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.Number), fullyQualifiedName: "@scope/jsii-calc-lib.Number", parametersJson: "[{\"docs\":{\"summary\":\"The number.\"},\"name\":\"value\",\"type\":{\"primitive\":\"number\"}}]")]
[System.Obsolete()]
- public class Number : Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.Value_, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IIDoublable
+ public class Number : Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.Value_, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IDoublable
{
/// Creates a Number object.
/// The number.
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClass.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClass.cs
index 268f0f5456..c679b634f0 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClass.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClass.cs
@@ -6,7 +6,7 @@ namespace Amazon.JSII.Tests.CalculatorNamespace
/// stability: Experimental
///
[JsiiClass(nativeType: typeof(Amazon.JSII.Tests.CalculatorNamespace.AbstractClass), fullyQualifiedName: "jsii-calc.AbstractClass")]
- public abstract class AbstractClass : Amazon.JSII.Tests.CalculatorNamespace.AbstractClassBase, Amazon.JSII.Tests.CalculatorNamespace.IIInterfaceImplementedByAbstractClass
+ public abstract class AbstractClass : Amazon.JSII.Tests.CalculatorNamespace.AbstractClassBase, Amazon.JSII.Tests.CalculatorNamespace.IInterfaceImplementedByAbstractClass
{
protected AbstractClass(): base(new DeputyProps(new object[]{}))
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClassReturner.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClassReturner.cs
index 015d1c806a..0fe6f75109 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClassReturner.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/AbstractClassReturner.cs
@@ -33,9 +33,9 @@ public virtual Amazon.JSII.Tests.CalculatorNamespace.AbstractClass GiveMeAbstrac
/// stability: Experimental
///
[JsiiMethod(name: "giveMeInterface", returnsJson: "{\"type\":{\"fqn\":\"jsii-calc.IInterfaceImplementedByAbstractClass\"}}")]
- public virtual Amazon.JSII.Tests.CalculatorNamespace.IIInterfaceImplementedByAbstractClass GiveMeInterface()
+ public virtual Amazon.JSII.Tests.CalculatorNamespace.IInterfaceImplementedByAbstractClass GiveMeInterface()
{
- return InvokeInstanceMethod(new object[]{});
+ return InvokeInstanceMethod(new object[]{});
}
///
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/BinaryOperation.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/BinaryOperation.cs
index 41c3a82456..bbb089e316 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/BinaryOperation.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/BinaryOperation.cs
@@ -7,7 +7,7 @@ namespace Amazon.JSII.Tests.CalculatorNamespace
/// stability: Experimental
///
[JsiiClass(nativeType: typeof(Amazon.JSII.Tests.CalculatorNamespace.BinaryOperation), fullyQualifiedName: "jsii-calc.BinaryOperation", parametersJson: "[{\"docs\":{\"summary\":\"Left-hand side operand.\"},\"name\":\"lhs\",\"type\":{\"fqn\":\"@scope/jsii-calc-lib.Value\"}},{\"docs\":{\"summary\":\"Right-hand side operand.\"},\"name\":\"rhs\",\"type\":{\"fqn\":\"@scope/jsii-calc-lib.Value\"}}]")]
- public abstract class BinaryOperation : Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.Operation, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IIFriendly
+ public abstract class BinaryOperation : Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.Operation, Amazon.JSII.Tests.CalculatorNamespace.LibNamespace.IFriendly
{
/// Creates a BinaryOperation.
/// Left-hand side operand.
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsTheInternalInterface.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsTheInternalInterface.cs
index 8e87d396a7..625123ddd7 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsTheInternalInterface.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsTheInternalInterface.cs
@@ -6,7 +6,7 @@ namespace Amazon.JSII.Tests.CalculatorNamespace
/// stability: Experimental
///
[JsiiClass(nativeType: typeof(Amazon.JSII.Tests.CalculatorNamespace.ClassThatImplementsTheInternalInterface), fullyQualifiedName: "jsii-calc.ClassThatImplementsTheInternalInterface")]
- public class ClassThatImplementsTheInternalInterface : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.IINonInternalInterface
+ public class ClassThatImplementsTheInternalInterface : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.INonInternalInterface
{
public ClassThatImplementsTheInternalInterface(): base(new DeputyProps(new object[]{}))
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsThePrivateInterface.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsThePrivateInterface.cs
index cb9fc4d864..14b155e522 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsThePrivateInterface.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassThatImplementsThePrivateInterface.cs
@@ -6,7 +6,7 @@ namespace Amazon.JSII.Tests.CalculatorNamespace
/// stability: Experimental
///
[JsiiClass(nativeType: typeof(Amazon.JSII.Tests.CalculatorNamespace.ClassThatImplementsThePrivateInterface), fullyQualifiedName: "jsii-calc.ClassThatImplementsThePrivateInterface")]
- public class ClassThatImplementsThePrivateInterface : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.IINonInternalInterface
+ public class ClassThatImplementsThePrivateInterface : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.INonInternalInterface
{
public ClassThatImplementsThePrivateInterface(): base(new DeputyProps(new object[]{}))
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithMutableObjectLiteralProperty.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithMutableObjectLiteralProperty.cs
index 1f19f052e4..3971eb4a2f 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithMutableObjectLiteralProperty.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithMutableObjectLiteralProperty.cs
@@ -24,9 +24,9 @@ protected ClassWithMutableObjectLiteralProperty(DeputyProps props): base(props)
/// stability: Experimental
///
[JsiiProperty(name: "mutableObject", typeJson: "{\"fqn\":\"jsii-calc.IMutableObjectLiteral\"}")]
- public virtual Amazon.JSII.Tests.CalculatorNamespace.IIMutableObjectLiteral MutableObject
+ public virtual Amazon.JSII.Tests.CalculatorNamespace.IMutableObjectLiteral MutableObject
{
- get => GetInstanceProperty();
+ get => GetInstanceProperty();
set => SetInstanceProperty(value);
}
}
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithPrivateConstructorAndAutomaticProperties.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithPrivateConstructorAndAutomaticProperties.cs
index 206e6d99e9..d3365cf6f0 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithPrivateConstructorAndAutomaticProperties.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ClassWithPrivateConstructorAndAutomaticProperties.cs
@@ -7,7 +7,7 @@ namespace Amazon.JSII.Tests.CalculatorNamespace
/// stability: Experimental
///
[JsiiClass(nativeType: typeof(Amazon.JSII.Tests.CalculatorNamespace.ClassWithPrivateConstructorAndAutomaticProperties), fullyQualifiedName: "jsii-calc.ClassWithPrivateConstructorAndAutomaticProperties")]
- public class ClassWithPrivateConstructorAndAutomaticProperties : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.IIInterfaceWithProperties
+ public class ClassWithPrivateConstructorAndAutomaticProperties : DeputyBase, Amazon.JSII.Tests.CalculatorNamespace.IInterfaceWithProperties
{
protected ClassWithPrivateConstructorAndAutomaticProperties(ByRefValue reference): base(reference)
{
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/Constructors.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/Constructors.cs
index 3e2b670ebe..fd2ea7d82a 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/Constructors.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/Constructors.cs
@@ -24,27 +24,27 @@ protected Constructors(DeputyProps props): base(props)
/// stability: Experimental
///
[JsiiMethod(name: "hiddenInterface", returnsJson: "{\"type\":{\"fqn\":\"jsii-calc.IPublicInterface\"}}")]
- public static Amazon.JSII.Tests.CalculatorNamespace.IIPublicInterface HiddenInterface()
+ public static Amazon.JSII.Tests.CalculatorNamespace.IPublicInterface HiddenInterface()
{
- return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
+ return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
}
///
/// stability: Experimental
///
[JsiiMethod(name: "hiddenInterfaces", returnsJson: "{\"type\":{\"collection\":{\"elementtype\":{\"fqn\":\"jsii-calc.IPublicInterface\"},\"kind\":\"array\"}}}")]
- public static Amazon.JSII.Tests.CalculatorNamespace.IIPublicInterface[] HiddenInterfaces()
+ public static Amazon.JSII.Tests.CalculatorNamespace.IPublicInterface[] HiddenInterfaces()
{
- return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
+ return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
}
///
/// stability: Experimental
///
[JsiiMethod(name: "hiddenSubInterfaces", returnsJson: "{\"type\":{\"collection\":{\"elementtype\":{\"fqn\":\"jsii-calc.IPublicInterface\"},\"kind\":\"array\"}}}")]
- public static Amazon.JSII.Tests.CalculatorNamespace.IIPublicInterface[] HiddenSubInterfaces()
+ public static Amazon.JSII.Tests.CalculatorNamespace.IPublicInterface[] HiddenSubInterfaces()
{
- return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
+ return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
}
///
@@ -60,27 +60,27 @@ public static Amazon.JSII.Tests.CalculatorNamespace.PublicClass MakeClass()
/// stability: Experimental
///
[JsiiMethod(name: "makeInterface", returnsJson: "{\"type\":{\"fqn\":\"jsii-calc.IPublicInterface\"}}")]
- public static Amazon.JSII.Tests.CalculatorNamespace.IIPublicInterface MakeInterface()
+ public static Amazon.JSII.Tests.CalculatorNamespace.IPublicInterface MakeInterface()
{
- return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
+ return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
}
///
/// stability: Experimental
///
[JsiiMethod(name: "makeInterface2", returnsJson: "{\"type\":{\"fqn\":\"jsii-calc.IPublicInterface2\"}}")]
- public static Amazon.JSII.Tests.CalculatorNamespace.IIPublicInterface2 MakeInterface2()
+ public static Amazon.JSII.Tests.CalculatorNamespace.IPublicInterface2 MakeInterface2()
{
- return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
+ return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
}
///
/// stability: Experimental
///
[JsiiMethod(name: "makeInterfaces", returnsJson: "{\"type\":{\"collection\":{\"elementtype\":{\"fqn\":\"jsii-calc.IPublicInterface\"},\"kind\":\"array\"}}}")]
- public static Amazon.JSII.Tests.CalculatorNamespace.IIPublicInterface[] MakeInterfaces()
+ public static Amazon.JSII.Tests.CalculatorNamespace.IPublicInterface[] MakeInterfaces()
{
- return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
+ return InvokeStaticMethod(typeof(Amazon.JSII.Tests.CalculatorNamespace.Constructors), new object[]{});
}
}
}
diff --git a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ConsumersOfThisCrazyTypeSystem.cs b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ConsumersOfThisCrazyTypeSystem.cs
index db39b873ea..0cdaad78e5 100644
--- a/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ConsumersOfThisCrazyTypeSystem.cs
+++ b/packages/jsii-pacmak/test/expected.jsii-calc/dotnet/Amazon.JSII.Tests.CalculatorPackageId/Amazon/JSII/Tests/CalculatorNamespace/ConsumersOfThisCrazyTypeSystem.cs
@@ -24,7 +24,7 @@ protected ConsumersOfThisCrazyTypeSystem(DeputyProps props): base(props)
/// stability: Experimental
///
[JsiiMethod(name: "consumeAnotherPublicInterface", returnsJson: "{\"type\":{\"primitive\":\"string\"}}", parametersJson: "[{\"name\":\"obj\",\"type\":{\"fqn\":\"jsii-calc.IAnotherPublicInterface\"}}]")]
- public virtual string ConsumeAnotherPublicInterface(Amazon.JSII.Tests.CalculatorNamespace.IIAnotherPublicInterface obj)
+ public virtual string ConsumeAnotherPublicInterface(Amazon.JSII.Tests.CalculatorNamespace.IAnotherPublicInterface obj)
{
return InvokeInstanceMethod(new object[]{obj});
}
@@ -33,7 +33,7 @@ public virtual string ConsumeAnotherPublicInterface(Amazon.JSII.Tests.Calculator
/// stability: Experimental
///
[JsiiMethod(name: "consumeNonInternalInterface", returnsJson: "{\"type\":{\"primitive\":\"any\"}}", parametersJson: "[{\"name\":\"obj\",\"type\":{\"fqn\":\"jsii-calc.INonInternalInterface\"}}]")]
- public virtual object ConsumeNonInternalInterface(Amazon.JSII.Tests.CalculatorNamespace.IINonInternalInterface obj)
+ public virtual object ConsumeNonInternalInterface(Amazon.JSII.Tests.CalculatorNamespace.INonInternalInterface obj)
{
return InvokeInstanceMethod