Forum Pplware

Versão Completa: C# arrays & reflection
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boas,

O meu problema é o seguinte:
tenho que criar um array em runtime com recurso a reflexão mas nao conheço nem o tipo nem o tamanho do array a ser criado.

O cabeçalho do meu metodo:
Código:
public static O OMeuMetodo<I, O>(I value)

em que o generico 'O' representa uma classe que possui uma propriedade 'Items', sendo esta um array cujo tipo varia consoante o tipo de 'O'.
O generico 'I' representa também uma classe de tipo desconhecido e com varias propriedades, a partir das quais vai ser criado o array.

Após aplicar a minha logica de negócio, tenho de transformar as propriedades de 'I' em instancias de uma nova classe e adicioná-las ao dito array, à medida que vão sendo transformadas. Para isto preciso de um array ou uma lista auxiliar para que depois possa fazer um 'set' à propriedade 'Items', com o seguinte código:


Código:
O outObject = (O)typeof(O).Assembly.CreateInstance(typeof(O).FullName);

typeof(O).GetProperty("Items").SetValue(outObject, auxArray, null);

Alguém me sabe dizer como posso criar o array auxiliar, uma vez que as classes representadas por 'O' não implementam qualquer interface que permita conversões.

Cumps,
e venham daí os gurus de C# Wink
(26-11-2008 12:23)abip Escreveu: [ -> ]Boas,

O meu problema é o seguinte:
tenho que criar um array em runtime com recurso a reflexão mas nao conheço nem o tipo nem o tamanho do array a ser criado.

O cabeçalho do meu metodo:
Código:
public static O OMeuMetodo<I, O>(I value)

em que o generico 'O' representa uma classe que possui uma propriedade 'Items', sendo esta um array cujo tipo varia consoante o tipo de 'O'.
O generico 'I' representa também uma classe de tipo desconhecido e com varias propriedades, a partir das quais vai ser criado o array.

Após aplicar a minha logica de negócio, tenho de transformar as propriedades de 'I' em instancias de uma nova classe e adicioná-las ao dito array, à medida que vão sendo transformadas. Para isto preciso de um array ou uma lista auxiliar para que depois possa fazer um 'set' à propriedade 'Items', com o seguinte código:


Código:
O outObject = (O)typeof(O).Assembly.CreateInstance(typeof(O).FullName);

typeof(O).GetProperty("Items").SetValue(outObject, auxArray, null);

Alguém me sabe dizer como posso criar o array auxiliar, uma vez que as classes representadas por 'O' não implementam qualquer interface que permita conversões.

Cumps,
e venham daí os gurus de C# Wink

http://gsraj.tripod.com/dotnet/reflection.html

Primeiro link apresentado pelo google ao procurar por C# reflection, penso que te serve.
Boas,

Obrigado pela resposta mas já resolvi o problema de outra forma. Esse link é util para várias coisas com reflecção mas nao me resolvia o problema dos arrays e das classes que nao permitiam casts ou conversoes.

Fico agradecido,
Cumps
Olá, sei que este post não é o indicado para a minha dúvida mas criar um para o efeito também não faz sentido, ora aqui vai...

No próximo semestre sei que vou ter uma cadeira em que vou ter de programar em C. Sendo que os meus conhecimentos de programação ficam-se pelo VB6 muito fraquinhos e pelo LOAD "".
Tentando antecipar-me à cadeira, quero começar a dar umas voltas para não ser confrontado com uma enxurrada de instruções e métodos, tudo ao mesmo tempo, que decerto me fariam dar o TILT.

Assim:

1 - Há alguma diferença significativa entre C, C++ e C#?
2 - Com o Microsoft Visual Basic 2008 Express Edition (que já tenho instalado) posso programar em qualquer uma das 3?
3 - Sabem de algum sítio com uns tutoriais à maneira para começar? Bem sei que no Pplware.com tem tutoriais C# mas como ainda não tenho a dúvida 1 esclarecida....
1 - Há alguma diferença significativa entre C, C++ e C#?

Cada linguagem tem um paradigma, ou seja, tem um metodo diferente de programacao, os 3 principais paradigmas sao, procedimental, funcional e orientado a objectos.O C é uma linguagem procedimental enquanto que o C++ e o C# sao linguagens orientadas a objectos.Outra diferenca é o modo como são compiladas as linguagens, C e C++ sao directamente compiladas para linguagem de máquina, enquanto C# passa pelo CLI onde é interpretado e compilado.Isso tem a ver com a framework.Isto na minha opinião são as principais diferenças, só uma nota, embora geralmente se use C# para programar em .Net, também o podes fazer com C++, e axo que com C tb e possivel mas n tenho a certeza.Faz uma pesquisa no google acerca das cenas que falei.

2 - Com o Microsoft Visual Basic 2008 Express Edition (que já tenho instalado) posso programar em qualquer uma das 3?

Obvio que não, terás que sacar o Express Edition de cada uma das linguagens ou o visual studio completo.

3 - Sabem de algum sítio com uns tutoriais à maneira para começar? Bem sei que no Pplware.com tem tutoriais C# mas como ainda não tenho a dúvida 1 esclarecida....

Coisa que não faltam são tutoriais, o melhor amigo de um programador é o google, só tens que saber usá-lo, um conselho, sei que a tendencia para procurar em portugues ao principio é grande, mas se procurares em ingles, obtens resultados mt melhores.
Obrigado pelos esclarecimentos.
Vou ver se consigo desenrascar-me sem melgar muita gente Big Grin
URL's de Referência