public override void ConvertToSurrogate(T value, ref GrainReferenceSurrogate surrogate) { // Check that the typical case is false before performing the more expensive interface check if (value is not GrainReference refValue) { if (value is IGrainObserver observer) { GrainReferenceCodecProvider.ThrowGrainObserverInvalidException(observer); } refValue = (GrainReference)(object)value.AsReference <T>(); } surrogate = new GrainReferenceSurrogate { GrainId = refValue.GrainId, GrainInterfaceType = refValue.InterfaceType }; }
public override T ConvertFromSurrogate(ref GrainReferenceSurrogate surrogate) { return((T)_grainFactory.GetGrain(surrogate.GrainId, surrogate.GrainInterfaceType)); }