public new virtual ObjRef CreateObjRef(Type requestedType) { createInstance(); ObjRef CreateObjRef = BaseMashalByRef.CreateObjRef(requestedType); tr.Dispose(); return(CreateObjRef); }
public static ObjRef Marshal(MarshalByRefObject Obj, string ObjURI, Type RequestedType) { if (IsTransparentProxy(Obj)) { RealProxy proxy = RemotingServices.GetRealProxy(Obj); Identity identity = proxy.ObjectIdentity; if (identity != null) { if (proxy.GetProxiedType().IsContextful&& !identity.IsConnected) { // Unregistered local contextbound object. Register now. ClientActivatedIdentity cboundIdentity = (ClientActivatedIdentity)identity; if (ObjURI == null) { ObjURI = NewUri(); } cboundIdentity.ObjectUri = ObjURI; RegisterServerIdentity(cboundIdentity); cboundIdentity.StartTrackingLifetime((ILease)Obj.InitializeLifetimeService()); return(cboundIdentity.CreateObjRef(RequestedType)); } else if (ObjURI != null) { throw new RemotingException("It is not possible marshal a proxy of a remote object."); } ObjRef or = proxy.ObjectIdentity.CreateObjRef(RequestedType); TrackingServices.NotifyMarshaledObject(Obj, or); return(or); } } if (RequestedType == null) { RequestedType = Obj.GetType(); } if (ObjURI == null) { if (Obj.ObjectIdentity == null) { ObjURI = NewUri(); CreateClientActivatedServerIdentity(Obj, RequestedType, ObjURI); } } else { ClientActivatedIdentity identity = GetIdentityForUri("/" + ObjURI) as ClientActivatedIdentity; if (identity == null || Obj != identity.GetServerObject()) { CreateClientActivatedServerIdentity(Obj, RequestedType, ObjURI); } } ObjRef oref; if (IsTransparentProxy(Obj)) { oref = RemotingServices.GetRealProxy(Obj).ObjectIdentity.CreateObjRef(RequestedType); } else { oref = Obj.CreateObjRef(RequestedType); } TrackingServices.NotifyMarshaledObject(Obj, oref); return(oref); }
public static ObjRef Marshal (MarshalByRefObject Obj, string ObjURI, Type RequestedType) { if (IsTransparentProxy (Obj)) { RealProxy proxy = RemotingServices.GetRealProxy (Obj); Identity identity = proxy.ObjectIdentity; if (identity != null) { if (proxy.GetProxiedType().IsContextful && !identity.IsConnected) { // Unregistered local contextbound object. Register now. ClientActivatedIdentity cboundIdentity = (ClientActivatedIdentity)identity; if (ObjURI == null) ObjURI = NewUri(); cboundIdentity.ObjectUri = ObjURI; RegisterServerIdentity (cboundIdentity); cboundIdentity.StartTrackingLifetime ((ILease)Obj.InitializeLifetimeService()); return cboundIdentity.CreateObjRef (RequestedType); } else if (ObjURI != null) throw new RemotingException ("It is not possible marshal a proxy of a remote object."); ObjRef or = proxy.ObjectIdentity.CreateObjRef (RequestedType); TrackingServices.NotifyMarshaledObject (Obj, or); return or; } } if (RequestedType == null) RequestedType = Obj.GetType (); if (ObjURI == null) { if (Obj.ObjectIdentity == null) { ObjURI = NewUri(); CreateClientActivatedServerIdentity (Obj, RequestedType, ObjURI); } } else { ClientActivatedIdentity identity = GetIdentityForUri ("/" + ObjURI) as ClientActivatedIdentity; if (identity == null || Obj != identity.GetServerObject()) CreateClientActivatedServerIdentity (Obj, RequestedType, ObjURI); } ObjRef oref; if (IsTransparentProxy (Obj)) oref = RemotingServices.GetRealProxy (Obj).ObjectIdentity.CreateObjRef (RequestedType); else oref = Obj.CreateObjRef (RequestedType); TrackingServices.NotifyMarshaledObject (Obj, oref); return oref; }