segunda-feira, 22 de junho de 2009

.Net, as coisas estranhas

Bem, tenho desenvolvido ultimamente em .Net, não vou negar, e a cada dia eu me deparo com uma coisa pior que a outra. Resolvi escreve-las aqui, não para icitar brigas, mas para documenta-las. Vamos as coisas mais estranhas do .Net.


1) Serialização de Objetos: Existe uma classe chamada XmlSerializer, muito útil, mas quando você vai serializar um objeto que se relaciona com outros você precisa criar uma instancia do XmlSerializer informando todas as classes que o seu objeto depende, ele não consegue inferir via reflexão.

é mais iu menios assim:


XmlSerializer ser = new XmlSerializer(
typeof(AClasseQueVaiSerializar), new Type[] {
typeof(todas), typeof(as), typeof(classes),
typeof(que), typeof(depende), });


Se houver outra forma e alguem souber, por favor, me avise.

2) Falta de comportamento padrão: Precisei criar um controle para exibir algumas informações para o usuário, para deixar a coisa mais bonita coloquei as bordas arredondas seguindo algumas dicas que achei na internet. Como a caria da coisa ficou legal, gerei a partir do controle uma imagem e salvei, para fazer um estilo de live preview quando o usuário selecionasse o arquivo depois de salvo. Ai é que veio a surpresa, cade os cantos arredondados????

Só para clarear, segue o trecho de código:

// Função do windows que deixa com os cantos arredondados.
[DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")]
private static extern IntPtr CreateRoundRectRgn(
int nLeftRect, // x-coordinate of upper-left corner
int nTopRect, // y-coordinate of upper-left corner
int nRightRect, // x-coordinate of lower-right corner
int nBottomRect, // y-coordinate of lower-right corner
int nWidthEllipse, // height of ellipse
int nHeightEllipse // width of ellipse
);
...
Region = System.Drawing.Region.FromHrgn(
CreateRoundRectRgn(0, 0, Width, Height, 20, 20));


E para salvar a imagem, simplesmente...


Bitmap bitmap = new Bitmap(Width_controle, Height_controle);
panel2.DrawToBitmap(bitmap, new Rectangle(0,0,
Width_controle, Height_controle) );


3) Emuns: Bem, são realmente simples enumerações numéricas, bem diferente do Java.

Nenhum comentário:

Postar um comentário