易截截图软件、单文件、免安装、纯绿色、仅160KB
热门标签: c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 最新文章 : c#

c# 的namespace以及assembly

1 NameSapce

1 1个namespace里面可以有多个类
2  namespace和cs文件是多对多的关系。
3  调用另一个namespace的声明,可以使用using <namespace> ,然后直接调用类名,或者使用namespace.类名来调用
4  namespace支持别名(alias)   using namespace = namespace.classname,如using mycar = consoleapplciation1.car;
5  namespace支持嵌套
2 Assembly
1   Assembly 两种类型,exe 或dll, 两种类型都可以被其他程序调用,得到内部的Class Type.
2   .net 的Assembly具有语言无关性,c#的程序可以调用或者继承vb.net编写的DLL/exe assembly中的type
3    C#中的type是由namespace.type决定的,如果两个assembly(dll/exe),中包含有相同的namespace.type,那么c#认为两者相同
4    Assembly有一个4位数的版本号 <major>.<minor>.<build>.<revision>
5    C#中的Assembly使用manifest文件以及自身来描述自身调用的其他Assembly,版本号以及内部包含的Type,Class等。
6    Assembly的组成部分: Win32的文件头/C ......

Socket编程(C#)

//Socket基本编程
//服务端:
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
Thread mythread ;
Socket socket;
// 清理所有正在使用的资源。
protected override void Dispose( bool disposing )
{
try
  {   
   socket.Close();//释放资源
   mythread.Abort ( ) ;//中止线程
  }
  catch{ }
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
public static IPAddress GetServerIP()
{
IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());
return ieh.AddressList[0];
}
private void BeginListen()
{
IPAddress ServerIp=GetServerIP();
IPEndPoint iep=new IPEndPoint(ServerIp,8000);
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
byte[] byteMessage=new byte[100];
this.label1.Text=iep.ToString();
socket.Bind(iep);
// do
while(true)
{
try
{
socket.Listen(5);
Socket newSocket=socket.Accept();
newSoc ......

C#开发实例

c#改变系统鼠标
---------------------------------------------------------------------------------------------------
using System.Runtime.InteropServices;
 
[DllImport("User32.DLL")]
public static extern bool SetSystemCursor(IntPtr hcur, uint id);
public const uint OCR_NORMAL = 32512;
public const uint OCR_IBEAM = 32513;
 
[DllImport("User32.DLL")]
public static extern bool SystemParametersInfo(uint uiAction, uint uiParam,
    IntPtr pvParam, uint fWinIni);
public const uint SPI_SETCURSORS = 87;
public const uint SPIF_SENDWININICHANGE = 2;
private void button1_Click(object sender, EventArgs e)
{
    //设置
    SetSystemCursor(Cursors.WaitCursor.CopyHandle(), OCR_NORMAL);
    SetSystemCursor(Cursors.WaitCursor.CopyHandle(), OCR_IBEAM);
    //..可以根据情况加
}
 
private void button2_Click(object sender, EventArgs e)
{
    //恢复
    SystemParam ......

利用C#的动态类型来实现与rails类似的元编程(1)

熟悉ruby on rails的开发员都知道,在ruby中,有一个很重要的特性,就是能够实现元编程,特别是在用于开发Web应用的rails框架中,用的特别多。在rails中,要创建一个动态方法并与数据库表字段相关联,主要的的步骤大概有这些:
1、首先配置好数据库的连接。
2、创建一个ActiveRecord模型,这个模型与数据库的表名称有一定的关系(具体的可以参考相关rails文档)
3、创建的一个ActiveRecord是继承于Base类的,其中Base类中封装了基本的CRUD操作
3、然后在程序运行时,动态关联到表的字段,或者执行数据可的CRUD操作。
比如有一个作者表author,包含有字段id,first_name,last_name。然后用rails工具生成一个与之关联的Module类Author,它是一个空类:
class Author < ActiveRecord::Base
end
然而,在实际操作中,我们却可以这样操作它:
 @author = Author.find(id)
 @name = @author.first_name
 @author.destory
这些在静态语言C#中是不可能做得到的。在C#的动态方法没有出现之前,通常为了实现实体与数据库的表映射,都是先创建一个固定的实体类,实体类的属性通过Attribute映射到表的字段,一般都是像下面的代码所示:
    [Tab ......

C#自动数据库代码生成的思路

C#操作数据库,写来写去就那么几句套话,烦。尽管有SqlHelper之类的辅助类,但还是有一堆参数要自己填,继续烦。最近有朋友问起自动代码生成工具的原理,那今天就说说我的思路吧。我只会MS SQL SERVER,所以就只拿它说事儿了。
其实大的思路很简单,获取数据库中的比较原子的对象,比如字段、参数等,并找出数据库各字段类型与C#中各种类型之间的对应关系即可。但具体到细节,诸如是不是需要引号,是不是需要提供长度,默认值的确定,参数的方向等等还是需要比较费些心思的。
举个简单例子吧,我们要从表中生成一个实体类,每个表字段也是实体对象的字段。很显然,只要知道表结构就可以精确的产生这个类定义。所以现在问题暂时就转换到了“知道表名,如何获取它包含的字段名和类型”。
最简单的方法,sp_columns '表名或视图名' 即可。不难发现,TYPE_NAME和COLUMN_NAME是我们想要的。
当然这样查出来的还都只是sql的类型,需要自己写个函数做下转换,转换成C#的类型。比如,将"varchar"转为"string"。
select * from sys.types order by name可以获取全部SQL的类型。
自动生成参数化的SELECT,INSERT,UPDATE等语句也可以用类似的方法获取字段名,然后参数就 ......

RFC访问SAP(C#)


using System.Windows.Forms;
using SAPFunctionsOCX;
using SAPLogonCtrl;
using SAPTableFactoryCtrl;
namespace SAPFunction
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
      
        private void BtnConn_Click(object sender, EventArgs e)
        {  
               //设置登录连接的类
                DataSet dset = new DataSet();
                SAPLogonCtrl.SAPLogonControlClass log ......
总记录数:642; 总页数:107; 每页6 条; 首页 上一页 [70] [71] [72] [73] 74 [75] [76] [77] [78] [79]  下一页 尾页
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号