En general, solo desea hacer un objeto MarshalByRef si va a utilizarlo en un contexto Remoting/WCF. Por lo general, este es un caso tan especial que no es doloroso.
Supongamos que tiene un tipo general, y quiere derivar de él y especializarlo, y luego remotamente el tipo derivado - ahora tiene un problema, porque para ser remoto un objeto debe heredar de MarshalByRefObject, y su original original tipo no. Supongamos que no puede cambiarlo porque está haciendo herencia binaria, o porque deriva de una clase base que no puede cambiar. Como señala el interlocutor, dado que C# (y .NET en general) no permite MI, no puede heredar de ambos.
La respuesta corta es que estás medio jodido. Cambie el tipo general a inhert desde MarshalByRefObject (o vaya lo suficientemente lejos de la cadena para que pueda insertarlo en algún lugar efectivo), o de lo contrario se le ocurriría rebuscar con objetos proxy.
Podría, por ejemplo, crear un contrato de interfaz que describa la interfaz de su tipo y luego construir un tipo de proxy heredando de MarshalByRefObject que también implemente esa interfaz por composición y delegación a una instancia de su tipo (es decir, un contenedor). A continuación, podría remotamente una instancia de ese tipo de proxy que instanciaría su tipo y haría el trabajo como se esperaba, pero todos los tipos de retorno de los métodos deben ser [Serializable].
public interface IMyType
{
string SayHello();
string BaseTypeMethodIWantToUse();
}
public class MyType : MyBaseType, IMyType
{
public string SayHello()
{
return "Hello!";
}
}
public class MyRemoteableType : MarshalByRefObject, IMyType
{
private MyType _instance = new MyType();
public string SayHello()
{
return _instance.SayHello();
}
public string BaseTypeMethodIWantToUse()
{
return _instance.BaseTypeMethodIWantToUse();
}
}
Aunque parece que hay mucho trabajo. En última instancia, si estás en este escenario, te sugiero un rediseño o un replanteamiento.
Creo que es posible que necesite para proporcionar más contexto sobre lo que el problema real es aquí ... –
1 por lo que Greg dijo que sospecha que su – JaredPar
-3 votos es para el (ahora editado) bromear acerca de un " lenguaje amputado de herencia múltiple ". No todos están de acuerdo en que la herencia múltiple es una buena idea. –