diff --git a/samples/Azure.ResourceManager.Sample/Generated/AvailabilitySetContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/AvailabilitySetContainer.cs
index c53d9be5ddc..f24751a7a18 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/AvailabilitySetContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/AvailabilitySetContainer.cs
@@ -31,6 +31,9 @@ internal AvailabilitySetContainer(ResourceOperationsBase parent) : base(parent)
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostContainer.cs
index 064518a555f..cebe0c25779 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostContainer.cs
@@ -31,6 +31,9 @@ internal DedicatedHostContainer(ResourceOperationsBase parent) : base(parent)
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostGroupContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostGroupContainer.cs
index 1ba82ea21bb..6f7d7ce3700 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostGroupContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/DedicatedHostGroupContainer.cs
@@ -31,6 +31,9 @@ internal DedicatedHostGroupContainer(ResourceOperationsBase parent) : base(paren
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/ImageContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/ImageContainer.cs
index 1d92b19325f..37672d31691 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/ImageContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/ImageContainer.cs
@@ -31,6 +31,9 @@ internal ImageContainer(ResourceOperationsBase parent) : base(parent)
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/ProximityPlacementGroupContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/ProximityPlacementGroupContainer.cs
index b2f47a4ca43..6b93429bd2a 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/ProximityPlacementGroupContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/ProximityPlacementGroupContainer.cs
@@ -31,6 +31,9 @@ internal ProximityPlacementGroupContainer(ResourceOperationsBase parent) : base(
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/SshPublicKeyContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/SshPublicKeyContainer.cs
index 739a240b155..a3e3891e355 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/SshPublicKeyContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/SshPublicKeyContainer.cs
@@ -31,6 +31,9 @@ internal SshPublicKeyContainer(ResourceOperationsBase parent) : base(parent)
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineContainer.cs
index ff03f171d69..9c41fb22e8f 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineContainer.cs
@@ -31,6 +31,9 @@ internal VirtualMachineContainer(ResourceOperationsBase parent) : base(parent)
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionContainer.cs
index 683cc2cb7f9..b8e7dbf3f50 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionContainer.cs
@@ -31,6 +31,9 @@ internal VirtualMachineExtensionContainer(ResourceOperationsBase parent) : base(
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionImageContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionImageContainer.cs
index 5080655b0bb..008426d8dec 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionImageContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionImageContainer.cs
@@ -31,6 +31,9 @@ internal VirtualMachineExtensionImageContainer(ResourceOperationsBase parent) :
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionVirtualMachineScaleSetContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionVirtualMachineScaleSetContainer.cs
index e618d99ffe3..e689dab9dbf 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionVirtualMachineScaleSetContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineExtensionVirtualMachineScaleSetContainer.cs
@@ -31,6 +31,9 @@ internal VirtualMachineExtensionVirtualMachineScaleSetContainer(ResourceOperatio
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetContainer.cs
index 30a56efb3cb..33beb3069f8 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetContainer.cs
@@ -31,6 +31,9 @@ internal VirtualMachineScaleSetContainer(ResourceOperationsBase parent) : base(p
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetExtensionContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetExtensionContainer.cs
index e1c33802910..b637446ee00 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetExtensionContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetExtensionContainer.cs
@@ -31,6 +31,9 @@ internal VirtualMachineScaleSetExtensionContainer(ResourceOperationsBase parent)
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetVMContainer.cs b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetVMContainer.cs
index 2fd037a9e4b..cac3e8c1fde 100644
--- a/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetVMContainer.cs
+++ b/samples/Azure.ResourceManager.Sample/Generated/VirtualMachineScaleSetVMContainer.cs
@@ -31,6 +31,9 @@ internal VirtualMachineScaleSetVMContainer(ResourceOperationsBase parent) : base
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
+ /// Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/src/AutoRest.CSharp/Common/Generation/Writers/LongRunningOperationWriter.cs b/src/AutoRest.CSharp/Common/Generation/Writers/LongRunningOperationWriter.cs
index 0a35e867b6a..7524a6190ae 100644
--- a/src/AutoRest.CSharp/Common/Generation/Writers/LongRunningOperationWriter.cs
+++ b/src/AutoRest.CSharp/Common/Generation/Writers/LongRunningOperationWriter.cs
@@ -7,6 +7,7 @@
using System.Threading.Tasks;
using AutoRest.CSharp.Generation.Types;
using AutoRest.CSharp.Output.Models.Requests;
+using AutoRest.CSharp.Output.Models.Types;
using Azure;
using Azure.Core;
using Azure.Core.Pipeline;
@@ -16,7 +17,7 @@ namespace AutoRest.CSharp.Generation.Writers
{
internal class LongRunningOperationWriter
{
- public void Write(CodeWriter writer, LongRunningOperation operation)
+ public void Write(CodeWriter writer, LongRunningOperation operation, BuildContext? context = null)
{
var responseVariable = "response";
var pagingResponse = operation.PagingResponse;
@@ -38,7 +39,7 @@ public void Write(CodeWriter writer, LongRunningOperation operation)
using (writer.Scope())
{
- WriteFields(writer, operation, pagingResponse, helperType);
+ WriteFields(writer, operation, pagingResponse, helperType, context);
writer.Line();
writer.WriteXmlDocumentationSummary($"Initializes a new instance of {cs.Name} for mocking.");
@@ -48,7 +49,7 @@ public void Write(CodeWriter writer, LongRunningOperation operation)
writer.Line();
- WriteConstructor(writer, operation, pagingResponse, cs, helperType);
+ WriteConstructor(writer, operation, pagingResponse, cs, helperType, context);
writer.Line();
writer.WriteXmlDocumentationInheritDoc();
@@ -132,7 +133,7 @@ protected virtual CSharpType GetHelperType(LongRunningOperation operation)
return operation.ResultType != null ? new CSharpType(typeof(OperationInternals<>), operation.ResultType) : new CSharpType(typeof(OperationInternals));
}
- protected virtual void WriteFields(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType helperType)
+ protected virtual void WriteFields(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType helperType, BuildContext? context = null)
{
writer.Line($"private readonly {helperType} _operation;");
@@ -142,7 +143,7 @@ protected virtual void WriteFields(CodeWriter writer, LongRunningOperation opera
}
}
- protected virtual void WriteConstructor(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType lroType, CSharpType helperType)
+ protected virtual void WriteConstructor(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType lroType, CSharpType helperType, BuildContext? context = null)
{
writer.Append($"internal {lroType.Name}({typeof(ClientDiagnostics)} clientDiagnostics, {typeof(HttpPipeline)} pipeline, {typeof(Request)} request, {typeof(Response)} response");
diff --git a/src/AutoRest.CSharp/Mgmt/AutoRest/MgmtTarget.cs b/src/AutoRest.CSharp/Mgmt/AutoRest/MgmtTarget.cs
index 2e4d8b82dd8..de7abdcbad7 100644
--- a/src/AutoRest.CSharp/Mgmt/AutoRest/MgmtTarget.cs
+++ b/src/AutoRest.CSharp/Mgmt/AutoRest/MgmtTarget.cs
@@ -88,7 +88,7 @@ public static void Execute(GeneratedCodeWorkspace project, CodeModel codeModel,
foreach (var operation in context.Library.LongRunningOperations)
{
var codeWriter = new CodeWriter();
- mgmtLongRunningOperationWriter.Write(codeWriter, operation);
+ mgmtLongRunningOperationWriter.Write(codeWriter, operation, context);
project.AddGeneratedFile($"{operation.Type.Name}.cs", codeWriter.ToString());
}
@@ -96,7 +96,7 @@ public static void Execute(GeneratedCodeWorkspace project, CodeModel codeModel,
foreach (var operation in context.Library.NonLongRunningOperations)
{
var codeWriter = new CodeWriter();
- NonLongRunningOperationWriter.Write(codeWriter, operation);
+ NonLongRunningOperationWriter.Write(codeWriter, operation, context);
project.AddGeneratedFile($"{operation.Type.Name}.cs", codeWriter.ToString());
}
diff --git a/src/AutoRest.CSharp/Mgmt/Generation/MgmtLongRunningOperationWriter.cs b/src/AutoRest.CSharp/Mgmt/Generation/MgmtLongRunningOperationWriter.cs
index 3c20aa08a0f..20411c4d691 100644
--- a/src/AutoRest.CSharp/Mgmt/Generation/MgmtLongRunningOperationWriter.cs
+++ b/src/AutoRest.CSharp/Mgmt/Generation/MgmtLongRunningOperationWriter.cs
@@ -7,8 +7,10 @@
using System.Threading.Tasks;
using AutoRest.CSharp.Generation.Types;
using AutoRest.CSharp.Generation.Writers;
+using AutoRest.CSharp.Mgmt.Decorator;
using AutoRest.CSharp.Mgmt.Output;
using AutoRest.CSharp.Output.Models.Requests;
+using AutoRest.CSharp.Output.Models.Types;
using Azure;
using Azure.Core;
using Azure.Core.Pipeline;
@@ -45,8 +47,9 @@ protected override CSharpType GetValueTaskType(LongRunningOperation operation)
return mgmtOperation.WrapperType != null ? new CSharpType(typeof(Response<>), mgmtOperation.WrapperType) : base.GetValueTaskType(operation);
}
- protected override void WriteFields(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType helperType)
+ protected override void WriteFields(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType helperType, BuildContext? context)
{
+ Debug.Assert(context != null);
base.WriteFields(writer, operation, pagingResponse, helperType);
MgmtLongRunningOperation mgmtOperation = AsMgmtOperation(operation);
@@ -54,18 +57,23 @@ protected override void WriteFields(CodeWriter writer, LongRunningOperation oper
if (mgmtOperation.WrapperType != null)
{
writer.Line();
- writer.Line($"private readonly {typeof(ResourceOperationsBase)} {_operationBaseField};");
+ var isTenantResource = (operation.ResultType?.Implementation as MgmtObjectType)?.OperationGroup?.IsTenantResource(context.Configuration.MgmtConfiguration) == true;
+ var optionType = isTenantResource ? typeof(OperationsBase) : typeof(ResourceOperationsBase);
+ writer.Line($"private readonly {optionType} {_operationBaseField};");
}
}
- protected override void WriteConstructor(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType cs, CSharpType helperType)
+ protected override void WriteConstructor(CodeWriter writer, LongRunningOperation operation, PagingResponseInfo? pagingResponse, CSharpType cs, CSharpType helperType, BuildContext? context)
{
+ Debug.Assert(context != null);
MgmtLongRunningOperation mgmtOperation = AsMgmtOperation(operation);
if (mgmtOperation.WrapperType != null)
{
// pass operationsBase in so that the construction of [Resource] is possible
- writer.Append($"internal {cs.Name}({typeof(ResourceOperationsBase)} operationsBase, {typeof(ClientDiagnostics)} clientDiagnostics, {typeof(HttpPipeline)} pipeline, {typeof(Request)} request, {typeof(Response)} response");
+ var isTenantResource = (operation.ResultType?.Implementation as MgmtObjectType)?.OperationGroup?.IsTenantResource(context.Configuration.MgmtConfiguration) == true;
+ var optionType = isTenantResource ? typeof(OperationsBase) : typeof(ResourceOperationsBase);
+ writer.Append($"internal {cs.Name}({optionType} operationsBase, {typeof(ClientDiagnostics)} clientDiagnostics, {typeof(HttpPipeline)} pipeline, {typeof(Request)} request, {typeof(Response)} response");
if (pagingResponse != null)
{
diff --git a/src/AutoRest.CSharp/Mgmt/Generation/NonLongRunningOperationWriter.cs b/src/AutoRest.CSharp/Mgmt/Generation/NonLongRunningOperationWriter.cs
index 4690ba4bb9c..419b71b2b8a 100644
--- a/src/AutoRest.CSharp/Mgmt/Generation/NonLongRunningOperationWriter.cs
+++ b/src/AutoRest.CSharp/Mgmt/Generation/NonLongRunningOperationWriter.cs
@@ -6,7 +6,9 @@
using System.Threading.Tasks;
using AutoRest.CSharp.Generation.Types;
using AutoRest.CSharp.Generation.Writers;
+using AutoRest.CSharp.Mgmt.Decorator;
using AutoRest.CSharp.Mgmt.Output;
+using AutoRest.CSharp.Output.Models.Types;
using Azure;
using Azure.Core;
using Azure.ResourceManager.Core;
@@ -20,7 +22,7 @@ internal class NonLongRunningOperationWriter
///
///
///
- public static void Write(CodeWriter writer, NonLongRunningOperation operation)
+ public static void Write(CodeWriter writer, NonLongRunningOperation operation, BuildContext context)
{
var responseVariable = "response";
@@ -52,7 +54,9 @@ public static void Write(CodeWriter writer, NonLongRunningOperation operation)
if (operation.ResultDataType != null)
{
// todo: programmatically get the type of operationBase from the definition of [Resource]
- writer.Append($"{typeof(ResourceOperationsBase)} operationsBase, ");
+ var isTenantResource = (operation.ResultType?.Implementation as Resource)?.OperationGroup.IsTenantResource(context.Configuration.MgmtConfiguration) == true;
+ var optionType = isTenantResource ? typeof(OperationsBase) : typeof(ResourceOperationsBase);
+ writer.Append($"{optionType} operationsBase, ");
writer.Append($"{typeof(Response)}<{operation.ResultDataType}> {responseVariable}");
}
else
diff --git a/src/AutoRest.CSharp/Mgmt/Generation/ResourceContainerWriter.cs b/src/AutoRest.CSharp/Mgmt/Generation/ResourceContainerWriter.cs
index 223e7dba257..20c1349ef96 100644
--- a/src/AutoRest.CSharp/Mgmt/Generation/ResourceContainerWriter.cs
+++ b/src/AutoRest.CSharp/Mgmt/Generation/ResourceContainerWriter.cs
@@ -65,7 +65,13 @@ public void WriteContainer()
string baseClass = GetBaseType();
using (_writer.Scope($"{_resourceContainer.Declaration.Accessibility} partial class {cs.Name:D} : {baseClass}"))
{
- WriteContainerCtors(_writer, _resourceContainer.Type.Name, "ResourceOperationsBase", "parent");
+ var isTenantResource = _resourceContainer.OperationGroup.IsTenantResource(_context.Configuration.MgmtConfiguration);
+ var conextArgumentType = isTenantResource ? "OperationsBase" : "ResourceOperationsBase";
+ WriteContainerCtors(_writer, _resourceContainer.Type.Name, conextArgumentType, "parent");
+ if (!isTenantResource)
+ {
+ WriteParent(_writer);
+ }
WriteFields(_writer, _restClient!);
WriteIdProperty();
WriteContainerProperties(_writer, _resourceContainer.GetValidResourceValue());
@@ -76,6 +82,13 @@ public void WriteContainer()
}
}
+ private void WriteParent(CodeWriter writer)
+ {
+ _writer.Line();
+ _writer.WriteXmlDocumentationSummary($"Get the parent resource of this container.");
+ _writer.Line($"protected new ResourceOperationsBase Parent {{ get {{return base.Parent as ResourceOperationsBase;}} }}");
+ }
+
private void WriteRemainingMethods()
{
_writer.Line();
diff --git a/src/AutoRest.CSharp/Mgmt/Generation/ResourceOperationWriter.cs b/src/AutoRest.CSharp/Mgmt/Generation/ResourceOperationWriter.cs
index 5ff09ccc3f8..f2c08f4c7c5 100644
--- a/src/AutoRest.CSharp/Mgmt/Generation/ResourceOperationWriter.cs
+++ b/src/AutoRest.CSharp/Mgmt/Generation/ResourceOperationWriter.cs
@@ -140,7 +140,9 @@ private void WriteClientCtors(CodeWriter writer, ResourceOperation resourceOpera
writer.WriteXmlDocumentationParameter("id", "The identifier of the resource that is the target of operations.");
}
var baseConstructorCall = isSingleton ? "base(options)" : "base(options, id)";
- using (writer.Scope($"protected internal {typeOfThis}({typeof(ResourceOperationsBase)} options{constructorIdParam}) : {baseConstructorCall}"))
+ var isTenantResource = resourceOperation.OperationGroup.IsTenantResource(context.Configuration.MgmtConfiguration);
+ var optionType = isTenantResource ? typeof(OperationsBase) : typeof(ResourceOperationsBase);
+ using (writer.Scope($"protected internal {typeOfThis}({optionType} options{constructorIdParam}) : {baseConstructorCall}"))
{
if (!isSingleton)
{
diff --git a/src/AutoRest.CSharp/Mgmt/Generation/ResourceWriter.cs b/src/AutoRest.CSharp/Mgmt/Generation/ResourceWriter.cs
index 032ad3d2f5b..933ef7d7d69 100644
--- a/src/AutoRest.CSharp/Mgmt/Generation/ResourceWriter.cs
+++ b/src/AutoRest.CSharp/Mgmt/Generation/ResourceWriter.cs
@@ -36,8 +36,9 @@ public void WriteResource(CodeWriter writer, Resource resource, BuildContext Get the parent resource of this container.
+ protected new ResourceOperationsBase Parent { get { return base.Parent as ResourceOperationsBase; } }
+
private readonly ClientDiagnostics _clientDiagnostics;
/// Represents the REST operations.
diff --git a/test/TestProjects/TenantOnly/Generated/BillingAccount.cs b/test/TestProjects/TenantOnly/Generated/BillingAccount.cs
index da47ae9a5c9..a4cfe0b54c3 100644
--- a/test/TestProjects/TenantOnly/Generated/BillingAccount.cs
+++ b/test/TestProjects/TenantOnly/Generated/BillingAccount.cs
@@ -17,7 +17,7 @@ public class BillingAccount : BillingAccountOperations
/// Initializes a new instance of the class.
/// The client parameters to use in these operations.
/// The resource that is the target of operations.
- internal BillingAccount(ResourceOperationsBase options, BillingAccountData resource) : base(options, resource.Id)
+ internal BillingAccount(OperationsBase options, BillingAccountData resource) : base(options, resource.Id)
{
Data = resource;
}
diff --git a/test/TestProjects/TenantOnly/Generated/BillingAccountContainer.cs b/test/TestProjects/TenantOnly/Generated/BillingAccountContainer.cs
index 4aff4597df1..1a9f8a4b7aa 100644
--- a/test/TestProjects/TenantOnly/Generated/BillingAccountContainer.cs
+++ b/test/TestProjects/TenantOnly/Generated/BillingAccountContainer.cs
@@ -25,7 +25,7 @@ protected BillingAccountContainer()
/// Initializes a new instance of BillingAccountContainer class.
/// The resource representing the parent resource.
- internal BillingAccountContainer(ResourceOperationsBase parent) : base(parent)
+ internal BillingAccountContainer(OperationsBase parent) : base(parent)
{
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
}
diff --git a/test/TestProjects/TenantOnly/Generated/BillingAccountOperations.cs b/test/TestProjects/TenantOnly/Generated/BillingAccountOperations.cs
index b16a28b70d2..65cc32cc8f1 100644
--- a/test/TestProjects/TenantOnly/Generated/BillingAccountOperations.cs
+++ b/test/TestProjects/TenantOnly/Generated/BillingAccountOperations.cs
@@ -30,7 +30,7 @@ protected BillingAccountOperations()
/// Initializes a new instance of the class.
/// The client parameters to use in these operations.
/// The identifier of the resource that is the target of operations.
- protected internal BillingAccountOperations(ResourceOperationsBase options, TenantResourceIdentifier id) : base(options, id)
+ protected internal BillingAccountOperations(OperationsBase options, TenantResourceIdentifier id) : base(options, id)
{
_clientDiagnostics = new ClientDiagnostics(ClientOptions);
_restClient = new BillingAccountsRestOperations(_clientDiagnostics, Pipeline, BaseUri);
diff --git a/test/TestProjects/TenantOnly/Generated/BillingAccountsUpdateOperation.cs b/test/TestProjects/TenantOnly/Generated/BillingAccountsUpdateOperation.cs
index 951d42a80d7..d725de8dfbf 100644
--- a/test/TestProjects/TenantOnly/Generated/BillingAccountsUpdateOperation.cs
+++ b/test/TestProjects/TenantOnly/Generated/BillingAccountsUpdateOperation.cs
@@ -21,14 +21,14 @@ public partial class BillingAccountsUpdateOperation : Operation,
{
private readonly OperationInternals _operation;
- private readonly ResourceOperationsBase _operationBase;
+ private readonly OperationsBase _operationBase;
/// Initializes a new instance of BillingAccountsUpdateOperation for mocking.
protected BillingAccountsUpdateOperation()
{
}
- internal BillingAccountsUpdateOperation(ResourceOperationsBase operationsBase, ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Request request, Response response)
+ internal BillingAccountsUpdateOperation(OperationsBase operationsBase, ClientDiagnostics clientDiagnostics, HttpPipeline pipeline, Request request, Response response)
{
_operation = new OperationInternals(this, clientDiagnostics, pipeline, request, response, OperationFinalStateVia.AzureAsyncOperation, "BillingAccountsUpdateOperation");
_operationBase = operationsBase;
diff --git a/test/TestProjects/TenantOnly/TenantOnly.csproj b/test/TestProjects/TenantOnly/TenantOnly.csproj
index 6216658ba67..46d32d7014c 100644
--- a/test/TestProjects/TenantOnly/TenantOnly.csproj
+++ b/test/TestProjects/TenantOnly/TenantOnly.csproj
@@ -11,11 +11,12 @@
-
+
+
-
+