Desarrolador Cinco Estrellas – Visual Basic .NET 2005 + Visual C#

Transcrição

Desarrolador Cinco Estrellas – Visual Basic .NET 2005 + Visual C#
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
Desarrolador Cinco Estrellas
– Visual Basic .NET 2005 +
Visual C# .NET 2005 +
Visual Studio .NET 2005
Ejercicios
Página: 1
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
Índice
Novos Controles.................................................................................................................. 3
WebBrowser ....................................................................................................................... 3
Menus e Toolbars................................................................................................................ 7
Outros Controles ............................................................................................................... 19
CÓDIGOS DO PPT .......................................................................................................... 22
Stack.............................................................................................................................. 22
Semáforo ....................................................................................................................... 22
Serial Port...................................................................................................................... 23
Partial Class .................................................................................................................. 23
Classe My...................................................................................................................... 24
Statements ..................................................................................................................... 25
Overloading de Operador.............................................................................................. 25
Usando um Provider ..................................................................................................... 26
Página: 2
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
Nuevos Controles
WebBrowser
Objetivo: Montar un formulario Windows Forms con el control
WebBrowser. Este control permite navegar en páginas WEB a través de un
formulario.
Atención: Estos ejercicios pueden hacerse tanto con el Visual Studio .NET
2005 Beta 2, como con la versión Visual Basic 2005 Express Edition.
1. Abra el Visual Studio 2005 beta 2. Seleccione el menú File / New Project para
crear un nuevo Proyecto según la siguiente figura. Note que el lenguaje es el
Visual Basic, pero si usted quiere crear en Visual C# no hay ningún problema ya
que los pasos son los mismos.
2. A continuación presione el botón OK. Enseguida será creado el formulario
Form1, que es el default. Exclúyalo y cree uno nuevo llamado FormWebBrowser.
Para ello, en el Solution Explorer haga clic con el botón derecho sobre el nombre
Página: 3
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
del proyecto DCE1 y seleccione Add / Windows Form. Digite el nombre del
formulario y OK.
3. Exhiba la Toolbox (menú View / Toolbox).
Página: 4
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
4. Monte un formulario con los siguientes controles: 1 Label, 1 TextBox (txtURL), 1
Button (btnURL) y 1 WebBrowser. Para el control WebBrowser ajuste las
propiedades Dock a Bottom.
Página: 5
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
5. Haga un doble clic en el botón y digite el siguiente código para navegar.
VB.NET
Public Class FormWebBrowser
Private Sub btnURL_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnURL.Click
WebBrowser1.Navigate(txtURL.Text.Trim)
End Sub
End Class
C#
private void btnURL_Click(object sender, EventArgs e)
{
webBrowser1.Url(txtURL.Text.Trim);
}
6. Para ejecutar cualquier formulario en el Solution Explorer, haga clic con el botón
derecho en el DCE1 y seleccione Properties. Altere la propiedad Startup Object
para el nombre del formulario que será ejecutado. Este procedimiento deberá ser
ejecutado para todos los formularios creados. Es como si fuese un formulario
inicial a partir del cual se llama a los demás.
7. Presione F5 para ejecutar. Suministre una URL y haga clic en el botón GO para
abrir la página dentro del control webbrowser. Altere el tamaño de la ventana a
Página: 6
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
través de los bordes y note que el control también se adecua gracias a la propiedad
DOCK.
Menús y Toolbars
Objetivo: Mostrar los nuevos recursos y controles de menús y barras de
navegación.
1. Adicione un nuevo Windows Form llamado MenúsToolbars al Solution Explorer.
2. Exhiba la Toolbox y arrastre los controles MenúStrip, StatusStrip y
ContextMenúStrip.
Página: 7
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
3. Observe que estos controles aparecen en el pie de página del formulario.
Seleccione el MenúStrip y monte un menú según la siguiente figura. Adicione
otras opciones de menú según sus necesidades.
4. Seleccione el control StatusStrip y seleccione StatusLabel y ProgressBar. De este
modo se tiene en el mismo control diferentes posibilidades de configuraciones y
tipos de controles. Es posible además agregar un DropDownButton y un
SplitButton. Con ello el formulario es optimizado y los códigos relativos a los
controles resultan más simples de escribirse.
Página: 8
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
5. Seleccione el ContextMenúStrip y agregue las siguientes opciones. Estas opciones
se asociarán a los controles contenidos en el formulario para facilitarle los atajos a
los usuarios y ofrecer funcionalidades relativas al contexto.
6. Cuando monta un formulario conteniendo una fuente de datos, existe una barra de
navegación que está a asociada a la fuente de datos proporcionando nuevas
funcionalidades, especialmente de navegación en los registros. Cree un nuevo
Windows Forms llamado BancoDatos. El primer paso es montar una fuente de
datos, por lo tanto, seleccione el menú Data / Show Data Sources. En el VS.Net
2005 el concepto de fuente de datos cambió, ya que en esta ventana de Data
Sources usted define un conjunto de informaciones que podrán ser usadas en todo
el proyecto.
Página: 9
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
7. Haga clic en Add New Data Source. Note que la ventana muestra las opciones
para que se seleccione la fuente formada por un Database, un Web Service o un
Object. Seleccione Database y haga clic en Next.
Página: 10
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
8. Aquí tenemos la parte de conexión con el banco de datos. En este momento haga
clic en New Connection para definir una nueva conexión, suministre todos los
datos necesarios y pruebe la conexión. Observe el nombre del Data Source al usar
el Microsoft SQL Server (SqlClient), ya que es él que hace el acceso al SQL
Server 7 o superior. El banco de datos a ser usado es el Northwind.
Página: 11
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
9. En caso de que quiera cambiar, haga clic en el botón Change y seleccione el
Provider adecuado.
Página: 12
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
10. Finalmente, haga clic en el botón OK y observe como quedó la string de
conexión.
11. Haga clic en el botón Next y deje el chebox seleccionado para que esta string de
conexión sea almacenada en el archivo de configuración con el propósito de
facilitar el acceso y el uso.
Página: 13
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
12. Haga clic en Next para exhibir la lista conteniendo todos los objetos del banco de
datos Northwind. Seleccione la tabla Products con algunos campos. Preste
atención al nombre del DataSet que será generado. Haga clic en Finish para
terminar el proceso.
Página: 14
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
13. Vea la ventana Data Sources conteniendo la fuente de datos seleccionada en los
pasos anteriores. Una de las grandes facilidades es que se puede definir para cada
campo cómo será que dicho campo le aparecerá al usuario, así como la tabla, que
es DataGridView, Details o Customize.
Página: 15
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
14. Después arrastre la tabla Products hacia dentro del cuerpo del formulario y vea
que los datos son exhibios de acuerdo con el tipo definido en la exhibición. Si es
un DataGridView será exhibido un GridView, si es un Details será exhibido como
detalles de la tabla.
15. Esta operación montó en el pié de página varios controles que son: el
NorthwindDataSet, el ProductsTableAdapter, el ProductsBindingSouce y el
ProductsBindingNavigator, el que es el control asociado a la barra de navegación
es el BindingNavigator.
Página: 16
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
16. Esta barra de navegación está siempre vinculada a una fuente de datos.
Página: 17
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
17. Ejecute este formulario y navegue en los registros a través de la barra de
navegación. Observe aún que contiene los íconos de Add New, Delete y Save, los
que implementan dichas funcionalidades directamente en el control evitándole
muchos códigos al desarrollador.
Página: 18
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
Otros Controles
1. Adicione un nuevo Windows Form llamado tableLayout al Solution Explorer.
Arrastre el control TableLayoutPanel hacia el formulario. Note que se genera una
tabla con 2 líneas y 2 columnas. Abra la Smart Tag y configure el control según le
resulte necesario.
2. En caso de que quiera ajustar el layout a través de la ventana de edición,
seleccione Edit Rows y Columns. Este control es excelente para montar un layout
conteniendo solamente un control en cada célula, permitiéndole al desarrollador
un ajuste fino al formulario.
Página: 19
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
3. Adicione un nuevo Windows Form llamado Reports al Solution Explorer. Exhibir
informes generados en el SQL Reporting Services en un formulario requiere un
control específico para ello. Este control es el ReportViewer, por lo tanto,
arrástrelo hacia el formulario.
Página: 20
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
4. Todos los informes generados con el SQL Reporting Services serán instalados en
un servidor de WEB, y se tendrá acceso a los mismos vía http. Como la mayoría
de los aplicativos necesitan informes, esta herramienta fue elaborada para ofrecer
productividad con alto grado de complejidad en el análisis de datos. El desafío es
exhibir estos informes en un formulario, y ahora, con este control todo se vuelve
más fácil.
5. Básicamente las propiedades ReportPath y ReportServerUrl son las principales de
este control. Por lo tanto usted puede alterar las propiedades en tempo de
ejecución.
Página: 21
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
CÓDIGOS de los PPT – VB.NET
Stack
' Generic MyStack class
Public Class MyStack(Of T)
Private frames As T()
Private pointer As Integer = 0
Public Sub New(ByVal size As Integer)
frames = New T(size) {}
End Sub
Public Sub Push(ByVal frame As T)
frames(pointer) = frame
pointer += 1
End Sub
Public Function Pop() As T
pointer -= 1
Return frames(pointer)
End Function
End Class
Dim s As New MyStack(Of Integer)(7)
For f As Integer = 0 To 6
s.Push(f)
Next f
' Prints 6543210
For f As Integer = 0 To 6
Console.Write( s.Pop().ToString())
Next f
Semáforo
Um semáforo é criado com um contador, o qual representa um número total de threads
que podem sem acessadas pelo recurso protegido. Para usar um semáforo, a thread chama
Página: 22
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
o método WaitOne. Se o contador da chamada estiver disponível para retornar
imediatamente, o contador é reduzido para 1. Se não estiver disponível para este pedido,
então a instância bloqueia o pedido WaitOne até que o contador esteja disponível.
Quando a thread usada for finalizada deverá chamar o método Release, o qual reduz o
contador para 1.
‘ Cria um semáforo com um contador de 3
Dim sem As new Semaphore(3)
‘ Bloqueia até um contador disponível
sem.WaitOne()
‘ Usa o recurso protegido
‘ Release o semáforo
sem.Release()
Serial Port
A comunicação serial não é suportada pelo .NET nas versões anteriores a 2005, o acesso
era feito via P/Invoke no Win32 APIs. Agora temos uma classe nova chamada
System.IO.Ports com funcionalidades completas para serial I/O. A classe principal é a
SerialPort, o qual suporta acesso físico e virtual, por exemplo, aqueles suportados por
dispositivos com USB. Temos duas formas de suporte I/O: event-driven (onde o objeto
SerialPort é registrado no tratamento do evento) e blocking via métodos Read e Write, o
qual também permite acesso de Stream através da SerialPort.
Imports System.IO.Ports
...
Dim sp As New SerialPort("COM1", 19200)
sp.ReadTimeout = 3000
sp.WriteTimeout = 3000
sp.Open()
...
sp.Read(byteBuff, 0, nBytesToRead);c
Partial Class
Veja um exemplo do uso de Partial Class. O VB é mais flexível que o C# e o único erro
aqui é que a declaração do campo “i” ocorre novamente e este já foi declarado na parte 2.
Página: 23
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
' Demo.Part1.vb
Imports System
Partial Public Class Demo
Public Sub New()
Console.Write("P1")
End Sub
End Class
' Demo.Part2.vb
Partial Public Class Demo
Private i As Integer
End Class
' Demo.Part3.vb
' OK no Visual Basic
Public Class Demo
' Erro!
Private i As Integer
' OK
Private j As Integer
Public Sub Test()
' OK no Visual Basic
Console.Write("P3")
End Sub
End Class
Classe My
' Exibe os argumentos da linha de comando
For Each s As String In My.Application.CommandLineArgs
MessageBox.Show(s)
Next
' Exibe os arquivos do Visual Studio em My Documents
For Each s As String In My.Computer.FileSystem.GetFiles( _
My.Computer.FileSystem.SpecialDirectories.MyDocuments, _
False, "Visual Studio*.doc")
MessageBox.Show(s)
Next
' Testa as permissões do usuário
Página: 24
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
If My.User.IsInRole( "Administrators") Then
MessageBox.Show( "Hello Administrator " +
My.User.Identity.Name)
End If
' Chama um método do Web Service
MessageBox.Show( My.WebServices.DemoService.HelloWorld())
Statements
' Visual Basic 2005
Using p As New Pen(c)
g.DrawLine(p, 0, 0, 50, 50)
End Using
Overloading de Operador
' Classe com
Public Class
Private x
Private y
overload de +
Dem
As Byte
As Byte
Public Sub New(ByVal i As Byte, ByVal j As Byte)
Me.x = i
Me.y = j
End Sub
Public Overrides Function ToString() As String
Return String.Format("[{0},{1}]", x, y)
End Function
Public Shared Operator +( ByVal d1 As Dem, _
ByVal d2 As Dem) As Dem
Return New Dem( d1.x + d2.x,d1.y + d2.y)
End Operator
End Class
' Teste
Dim d1 As Dem = New Dem(1, 0)
Dim d2 As Dem = New Dem(2, 2)
Dim d3 As Dem = d1 + d2
d3 += d1
Trace.Write(d3) ' Exibe [4,2]
Página: 25
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
Usando um Provider
Import System.Data.Common
Dim factory As new DbProviderFactory =
DbProviderFactories.GetFactory("provider-name")
Dim con As new DbConnection=factory.CreateConnection()
Dim cmd As new DbCommand = con.CreateCommand()
Dim dt As new DataTable =
DbProviderFactories.GetFactoryClasses()
Dim factory As new DbProviderFactory =
DbProviderFactories.GetFactory(dt.Rows[x])
Ou
Dim factory As new DbProviderFactory =
DbProviderFactories.GetFactory(
dt.Select("InvariantName='System.Data.SqlClient'")
[0]["InvariantName"].ToString());
Dim dt As DataTable = conn.GetSchema("MetaDataCollections")
Dim dt As DataTable = conn.GetSchema("collection-name")
Dim dt As DataTable = conn.GetSchema("collection-name",
restriction-array)
Página: 26
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
CÓDIGOS dos PPT – C#
Usando um Provider
Nullable
Permitem tipos para suporte valores null
Nullable<int> i = 3;
bool b = i.HasValue();
int j = i.Value();
EventHandler
Define tratamento de eventos
delegate void EventHandler<T>(Object sender, T e)
where T : EventArgs;
Usando um Provider
// using
// System.Collections.Generic;
Stack< Employee > employees =
new Stack< Employee >();
// Usa método Push
// Parâmetros tipo Employee
// Não requer conversão
employees.Push(
new Employee() );
// Usa método Pop
// Retorno é tipo Employee
// Não requer conversão
Employee employee =
employees.Pop();
Stack< int > sizes =
new Stack< int >();
// Sem boxing
Página: 27
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
sizes.Push( 42 );
// Sem unboxing
int size1 = sizes.Pop();
sizes.Push( 77 );
// Error!
// Erro em tempo de compilação
sizes.Push( new Employee() );
// Código OK
int size2 = sizes.Pop();
// Generic MyStack class
public class MyStack< T >
{
private T[] frames;
private int pointer = 0;
public MyStack( int size )
{
frames = new T[ size ];
}
public void Push( T frame )
{
frames[ pointer++ ] =
frame;
}
public T Pop()
{
return
frames[ --pointer ];
}
}
MyStack< int > s =
new MyStack< int >( 7 );
for ( int f = 0; f < 7; ++f )
s.Push( f );
Página: 28
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
// Prints '6 5 4 3 2 1 0 '
for ( int f = 0; f < 7; ++f )
Console.Write(
s.Pop() + " " );
class MyList< K, V >
where K : IComparable,
IFormattable
where V : ValueBase, new()
{
// ...
}
class ValueBase {}
class Widget : ValueBase {}
class Thing : ValueBase
{
public Thing( int i ) {}
}
// 1 - OK
MyList<int, Widget> list1 =
new MyList<int, Widget>();
// 2 - Error!
MyList<int, string> list2 =
new MyList<int, string>();
// 3 - Error!
MyList<int, Thing> list3 =
new MyList<int, Thing>();
// 4 - Error!
MyList<Point, Widget> list4 = new MyList<Point, Widget>();
TraceSource
TraceSource ts = new TraceSource("Source1");
ts.Switch.Levels = SourceLevels.Information;
Página: 29
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
Semáforo
// Cria um semáforo com um contador de 3
Semaphore sem = new Semaphore(3);
// Bloqueia até um contador disponível
sem.WaitOne();
// Usa o recurso protegido
// Release o semáforo
sem.Release();
Compressão
// Ler dados compactados de um arquivo
string decomp = String.Empty;
FileStream fs = new FileStream(
@"c:\temp\compress.dat",
FileMode.Open, FileAccess.Read, FileShare.Read);
GZipStream zipStrm = new GZipStream(fs,
CompressionMode.Decompress);
using (StreamReader sr = new StreamReader(zipStrm))
{
decomp = sr.ReadToEnd();
}
Console.WriteLine(decomp);
SecureString
// Cria uma SecureString
SecureString ss = new SecureString();
// Adiciona caracteres e trava a string
ss.AppendCharacter('a');
ss.AppendCharacter('b');
ss.MakeReadOnly();
// Recupera conteúdo
IntPtr uniString =
Página: 30
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
Marshal.SecureStringToGlobalAllocUni(ss);
String s = Marshal.PtrToStringUni(uniString);
Console.WriteLine("String is '{0}'", s);
// Zero e free
Marshal.ZeroFreeGlobalAllocUni(uniString);
HttpListener
// Cria um HttpListener
HttpListener lst = new HttpListener();
// Adiciona um prefixo para o listener
lst.Prefixes.Add(
string.Format(" http://localhost/{0}/ ", args[0]));
// Inicia o listening
lst.Start();
while (true) {
// Bloqueia aguardando conexão
HttpListenerContext ctx = lst.GetContext();
// Faça algo...
}
Porta Serial
using System.IO.Ports;
...
SerialPort sp = new SerialPort("COM1", 19200);
sp.ReadTimeout = 3000;
sp.WriteTimeout = 3000;
sp.Open();
...
sp.Read(byteBuff, 0, nBytesToRead);c
Customização de Culturas
// Cria um novo objeto CultureAndRegionInfoBuilder
// baseado em culture en-US
CultureAndRegionInfoBuilder carib = new
Página: 31
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
CultureAndRegionInfoBuilder(
new CultureInfo("en-US"),
new RegionInfo("US"),
"en", "US", "microsoft");
// Registra nesta máquina no deploy
carib.Register();
// Salva em XML
carib.Save("c:\temp\myculture.xml");
// Instancia o novo objeto CultureInfo
CultureInfo ci = new CultureInfo("en-US-microsoft);
Códigos Independentes
// using System.Collections;
// Employees
Stack employees = new Stack();
// Use método Push
// Parâmetro é um objeto
// Usa conversão implícita
employees.Push(
new Employee() );
// Usa método Pop
// Retorna um objeto
// Precisa converter
Employee employee =
(Employee) employees.Pop();
// Integers
Stack sizes = new Stack();
// Box
sizes.Push( 42 );
// Unbox
int size1 = (int) sizes.Pop();
// Errado mas compila OK
sizes.Push( 77 );
sizes.Push( new Employee() );
// Compila OK mas gera
Página: 32
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
// InvalidCastException
int size2 = (int) sizes.Pop();
Tipos Partial
// Demo.Part1.cs
using System;
public partial class Demo
{
public Demo()
{
Console.Write( "P1" );
}
}
// Demo.Part2.cs
public partial class Demo
{
private int i;
}
// Demo.Part3.cs
// Erro 1
public class Demo
{
// Erro 2
private int i;
// OK
private int j;
public void Test()
{
// Erro 3
Console.Write( "P3" );
}
}
Métodos Anonymous
// C# 1.0
this.saveButton.Click +=
new EventHandler(
this.SaveClick );
private void SaveClick(
object sender,
Página: 33
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
EventArgs e )
{
this.Save();
}
// C# 2.0
this.saveButton.Click +=
delegate { this.Save(); };
// using System.Threading;
// C# 1.0
Thread task = new Thread(
new ThreadStart(
this.Background ) );
private void Background()
{
Trace.Write( "1.0" );
}
// C# 2.0
Thread task = new Thread(
delegate(){
Trace.Write( "2.0" ); } );
Iterators
public class Payroll
: IEnumerable< Emp >
{
private Emp[] pay;
public IEnumerator< Emp >
GetEnumerator()
{
foreach ( Emp e in pay )
yield return e;
}
public IEnumerable< Emp >
Forward
{
get { return this; }
}
public IEnumerable< Emp >
Reverse
Página: 34
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
{
get
{
// for ( int e = ...
yield return
pay[ e ];
}
}
}
Payroll p = new Payroll();
foreach ( Emp e in p )
Console.WriteLine( e.Net );
foreach ( Emp e in p.Reverse )
Console.WriteLine( e.Net );
Delegate Inference
// C# 1.0
this.Load += new EventHandler(
this.FormLoad );
this.Update( new CallBack( this.MyMethod ) );
// C# 2.0
this.Load += this.FormLoad;
this.Update( this.MyMethod );
Qualificador Alias
// C# 2.0
using System;
namespace Imaging
{
public class Console {}
public class System
{
public void Demo()
{
// Erro!
Console.Write("6x9");
// OK
global::System.Console
Página: 35
DCE 1a. Estrella – VB.NET 2005 + Visual C# .NET 2005 + VS.Net 2005
Autor: Renato I. Haddad (Microsoft Most Valuable Professional)
.Write("42");
}
}
}
Usando um Provider
using System.Data.Common
static DbProviderFactory factory =
DbProviderFactories.GetFactory("provider-name")
DbConnection con = factory.CreateConnection()
DbCommand cmd = con.CreateCommand()
Provider Enumeration
DataTable dt = DbProviderFactories.GetFactoryClasses()
DbProviderFactory factory =
DbProviderFactories.GetFactory(dt.Rows[x])
- ou DbProviderFactory factory = DbProviderFactories.GetFactory(
dt.Select("InvariantName='System.Data.SqlClient'")
[0]["InvariantName"].ToString());
Schema Discovery API
Recebe uma lista dos Schemas:
DataTable dt = conn.GetSchema("MetaDataCollections")
Recebe um Schema específico:
DataTable dt = conn.GetSchema("collection-name")
Recebe detalhes do Schema:
DataTable dt = conn.GetSchema("collection-name",
restriction-array)
Página: 36

Documentos relacionados