diff --git a/src/Orleans.Core.Abstractions/Activation/IGrainContext.cs b/src/Orleans.Core.Abstractions/Activation/IGrainContext.cs
index c5425344d2..da6df6c141 100644
--- a/src/Orleans.Core.Abstractions/Activation/IGrainContext.cs
+++ b/src/Orleans.Core.Abstractions/Activation/IGrainContext.cs
@@ -101,11 +101,6 @@ internal interface ICollectibleGrainContext : IGrainContext
void DelayDeactivation(TimeSpan timeSpan);
}
- internal interface IActivationData : ICollectibleGrainContext
- {
- IGrainRuntime GrainRuntime { get; }
- }
-
internal interface IGrainTimerRegistry
{
void OnTimerCreated(IGrainTimer timer);
diff --git a/src/Orleans.Core.Abstractions/Core/Grain.cs b/src/Orleans.Core.Abstractions/Core/Grain.cs
index ff43f6b0ad..a61e3e4c42 100644
--- a/src/Orleans.Core.Abstractions/Core/Grain.cs
+++ b/src/Orleans.Core.Abstractions/Core/Grain.cs
@@ -14,17 +14,15 @@ namespace Orleans
///
public abstract class Grain : IGrainBase, IAddressable
{
- private readonly IGrainContext _grainContext;
-
// Do not use this directly because we currently don't provide a way to inject it;
// any interaction with it will result in non unit-testable code. Any behaviour that can be accessed
// from within client code (including subclasses of this class), should be exposed through IGrainRuntime.
// The better solution is to refactor this interface and make it injectable through the constructor.
- internal IActivationData Data => _grainContext as IActivationData;
+ internal IGrainContext GrainContext { get; private set; }
- IGrainContext IGrainBase.GrainContext => _grainContext;
+ IGrainContext IGrainBase.GrainContext => GrainContext;
- public GrainReference GrainReference { get { return _grainContext.GrainReference; } }
+ public GrainReference GrainReference { get { return GrainContext.GrainReference; } }
internal IGrainRuntime Runtime { get; }
@@ -41,10 +39,10 @@ protected IGrainFactory GrainFactory
///
protected internal IServiceProvider ServiceProvider
{
- get { return _grainContext?.ActivationServices ?? Runtime?.ServiceProvider; }
+ get { return GrainContext?.ActivationServices ?? Runtime?.ServiceProvider; }
}
- internal GrainId GrainId => _grainContext.GrainId;
+ internal GrainId GrainId => GrainContext.GrainId;
///
/// This constructor should never be invoked. We expose it so that client code (subclasses of Grain) do not have to add a constructor.
@@ -61,7 +59,7 @@ protected Grain() : this(RuntimeContext.Current, grainRuntime: null)
///
protected Grain(IGrainContext grainContext, IGrainRuntime grainRuntime = null)
{
- _grainContext = grainContext;
+ GrainContext = grainContext;
Runtime = grainRuntime ?? grainContext?.ActivationServices.GetRequiredService();
}
@@ -113,7 +111,7 @@ protected IDisposable RegisterTimer(Func