.NET Framework Developer Center >
Fóruns do .NET Development
>
.NET Development - Geral
>
Remoting sem construtor padrão
Remoting sem construtor padrão
- Boa tarde pessoal!Estou trabalhando com .NET REMOTING, porém estou querendo criar um objeto no servidor sem ser com o construtor padrão. É possível criar um proxy para esse objeto que não possui o construtor padrão?Desde já agradeço!
Todas as Respostas
- Roberto,
Nesse caso você tem que criar classes que implementam o padrão Factory, ou seja, classes cuja responsabilidade é a criação de objetos.
Exploring the Factory Design Pattern
http://msdn.microsoft.com/en-us/library/ms954600.aspx
Att.
Ari C. Raimundo - Ari,
Eu tenho um windows service que utilizo remoting para acessá-lo. Em um dos casos eu preciso ter uma classe sem construtor padrão:
public class Class1 : IClass1{
public Class1(string pUsuario, string pSenha){
// Implementação
}
public void Metodo1(int p1){
// Implementação. Nesta hora vou utilizar usuário e senha específico passados no construtor
}
public void Metodo2(string p1, int p2){
// Implementação. Nesta hora vou utilizar usuário e senha específico passados no construtor
}
}
A aplicação que utiliza essa classe acessa via remoting da seguinte forma:
IClass1 objeto = (IClass1)Activator.GetObject(typeof(IClass1), "urlremoting.namespace.Class1");
Neste momento que preciso passar os parâmetros de usuário e senha que não podem ser configuradas já que são recebidas através da aplicação.
Considerando essa situação como o padrão Factory me ajudaria? - Roberto,
Já pensou em utilizar o padrão de injeção de depêndencia .. ?? .. veja : http://www.codeplex.com/unity/ , acho que esse block application iria cair com uma luva para vc..
abs,
Nelson Borges - http://nelsonborgesjr.spaces.live.com/blog/ "Ao infinito e além.. " - Roberto,
Não testei o código, mas você faria da seguinte maneira:
public interface IClassFactory
{
IClass GetClass(string usuario, string senha);
}
public interface IClass
{
string Usuario { get; set; }
string Senha { get; set; }
void Metodo1(int p1);
void Metodo2(string p1, int p2);
}
public class Class : MarshalByRefObject, IClass
{
... // implementação de IClass
}
public class ClassFactory : MarshalByRefObject, IClassFactory
{
public IClass GetClass(string usuario, string senha)
{
Class c = new Class();
c.Usuario = usuario;
c.Senha = senha;
return c;
}
}
Para criar então o objeto da classe Class usando o Factory seria da seguinte maneira:
IClassFactory classFactory = (IClassFactory)Activator.GetObject(typeof(IClassFactory),
"urlremoting.namespace.ClassFactory");
IClass classObject = classFactory.GetClass("user", "pwd");
classObject.Metodo1(5);
Espero ter ajudado.
Att.
Ari C. Raimundo - Roberto,
Testou o código que sugeri?
Att.
Ari C. Raimundo - Ari boa noite! Ainda não tive oportunidade de testar porque precisei viajar. Irei voltar amanhã e irei testar e dou o retorno.


