贝网博客

我的分类
流水记事
源码下载
Asp.net
其它
数据库
Javascript
.Net技术
我的相册
友情链接
博客园
CSDN博客
Start0
最新回复
嗷嗷的cCC
fasdfasdf
[:..
lz这个东西好厉害,我..
哈哈,好照片
不错,以前一直用黄色..
终于找到支持ff的修正..
终于找到支持ff的修正..
新鲜性
看看,试试,好不好使。
 日志列表    
本站一共有博客83条,当前显示81条
 发表于:2011-03-23 15:41:58
更新于:2011-11-18 10:25:51

由于时间有限,前前后后做了一个多月才完成第一个版本,只是实现了一些基本功能,界面如下:

由于个人想法有限,希望大家提些建议和想法,最好下载我的代码改好了,发给俺一份,我们一起探讨,呵呵
源代码下载  已下载

回复:1  发表于:2011-01-29 16:52:22
更新于:2011-11-18 10:25:34

今天在开发中,遇到一点小问题,如下面的代码,目的是每秒弹出一个警告,第一次弹出1,第二次弹出2……:
function test() {
    for (var i = 0; i < 3; i++) {
        var a = i;
        setTimeout(function() {  alert(a); }, 100);
    }
}
运行结果,是弹出了3个2,跟我想象的完全不同,究其原因,是因为f这个匿名函数在整个循环结束后,再运行的,而循环结束时a的值已经递增到2了,在循环结束后这个a变量没有销毁,造成了这个结果,解决方法,就是把for循环里加一个匿名函数闭包,使a在当前循环结束时销毁即可:
写法1:
function test() {
    for (var i = 0; i < 3; i++) {
        (function() {
            var a = i;
            setTimeout(function() {  alert(a); }, 100);
        })();
    }
}
写法2:
function test() {
    for (var i = 0; i < 3; i++) {
        (function(a){setTimeout(function(){alert(a)}, 100);})(i);
    }
}
上面这两段代码成功输出了:0,1,2

btw1:上面出错的原因是在修改 在页面加载完成后,再显示广告 的问题时出现的,在onload里通过循环去加载广告内容,并显示在div里:
var divs = ["#a1", "#a2"];
var urls = ["t.aspx?flg=81959", "t.aspx?flg=aa"];

function adLoad() {
    for (var i = 0; i < divs.length; i++) {
        (function() {
            var url = urls[i];
            var div = divs[i];

            jQuery.get(url, null, function(data) {
                jQuery(div).html(data);
            });
        })();
    }
}

btw2:立即执行匿名函数的方法有下面3种:
(function(){alert(1);})();
(function(){alert(2);}());
void function(){alert(3);}();

 发表于:2011-07-11 11:51:59
更新于:2011-11-18 10:25:25

今天接手新项目,为了调试方便,要把几个通用类库的源代码添加到当前解决方案来,为了省事,直接通过记事本打开sln解决方案文件,在Project里添加了我要添加的几个项目,然后保存,然后Visual Studio2010打开解决方案,问题来了,调试时,在进入到那几个通用类库时,一直报错:
源文件与模块生成时的文件不同。是否希望调试器使用它?

看了下输出,是报MD5不匹配,按网上搜索到的方案,把“要求源文件和版本匹配”的勾勾去掉,结果是不出错了,但是进入到源文件的行号完全错误,根本不是我要调试的那一行代码,又是删除站点生成的bin目录,又是清理解决方案,又是重启电脑的,都没能搞定

最后,尝试着删除通用类库的bin目录,这回生成站点时新问题出现了,对通用类库的引用文件找不到,赶紧看了下解决方案的属性,发现新添加的那几个项目,生成都没勾上,把它勾上,问题解决…… 偷懒都不能随便偷懒的

 发表于:2011-08-03 10:04:27
更新于:2011-11-18 10:24:57

假设有一个类定义如下:
public class aaa
{
    private string[] arr = new[] { "11", "22", "33", "44", "55" };
    public string this[int a, int b]
    {
        get { return arr[a] + arr[b]; }
        set { arr[a] = value; arr[b] = value; }
    }
    public string this[int a]
    {
        get { return arr[a]; }
        set { arr[a] = value; }
    }
    public string GetArr(int a)
    {
        return arr[a];
    }
}

这个类里定义了2个索引器,如果用il反编译器查看生成的dll,可以看到索引器实际上被编译成了方法,上面的代码编译后得到4个方法和2个属性:
get_Item : string(int32)
get_Item : string(int32,int32)
set_Item : void(int32,string)
set_Item : void(int32,int32,string)
Item:instance string(int32)
Item:instance string(int32,int32)

所以呢,对于索引器的反射调用,实际上就是对get_Item和set_Item方法的调用

对于未重载的方法GetArr,调用相对简单一些,代码如下:
aaa a = new aaa();
Type p = a.GetType();
MethodInfo m = p.GetMethod("GetArr", BindingFlags.Instance | BindingFlags.Public);
Console.Write(m.Invoke(a, new object[]{1}));// 输出22

但是对于重载方法,就要用到GetMethod方法的另一个带参数定义的重载了,如果用上面的方法调用,那么在GetMethod时,就会出现错误:发现不明确的匹配
这里用get_Item方法演示重载的反射调用:
aaa a = new aaa();
Type p = a.GetType();
// 调用索引器this[int a]的set方法
MethodInfo mset1 = p.GetMethod("set_Item", BindingFlags.Instance | BindingFlags.Public, null,
                                new[] { typeof(int), typeof(string) }, null);
mset1.Invoke(a, new object[] { 1, "abc" });
// 调用索引器this[int a, int b]的set方法
MethodInfo mset2 = p.GetMethod("set_Item", BindingFlags.Instance | BindingFlags.Public, null,
                                new[] { typeof(int), typeof(int), typeof(string) }, null);
mset2.Invoke(a, new object[] { 1, 3, "abc" });
// 调用索引器this[int a]的get方法
MethodInfo mget1 = p.GetMethod("get_Item", BindingFlags.Instance | BindingFlags.Public, null,
                                new[] { typeof(int) }, null);
Console.Write(mget1.Invoke(a, new object[] { 1 }));
// 调用索引器this[int a, int b]的get方法
MethodInfo mget2 = p.GetMethod("get_Item", BindingFlags.Instance | BindingFlags.Public, null,
                                new[] {typeof (int), typeof (int)}, null);
Console.Write(mget2.Invoke(a, new object[] {1, 3}));

当然,你也可以通过GetMethods方法来遍历所有方法,根据参数来匹配到合适的方法,如:
foreach (MethodInfo i in p.GetMethods(BindingFlags.Instance | BindingFlags.Public))
{
    // 这里根据方法名i.Name,和方法的参数集i.GetParameters()来判断是否合适的方法
}

回复:1  发表于:2010-03-16 15:20:39
更新于:2011-11-18 10:24:28

本来这篇文章,昨天就写好了,并已经放在这里了,郁闷的是空间有个“安装模板”,我点击一下,结果全站文件全部被清空了,后来联系空间商恢复备份,现在只好重新写一遍了,再次小小的郁闷一下。

下面这个附件是我用的C#版实体类生成工具,可以连接到Oracle、SqlServer2000、Access,并读取表生成相应的实体类
BuildEntity.rar  已下载BuildEntity.rar

需要说明的是,上面这个压缩包,并没有源代码,如果有谁需要,可以联系我要,生成的实体类,有加属性和private的字段,用于配合我的SqlHelper来生成Insert、Update、Delete、Select之类的SQL的,这样可以省去自己拼接SQL,防止注入之类的麻烦
我用的SqlHelper就是压缩包里的DbOperation.dll,用VS.Net的对象浏览器就可以看到里面的BuildSql方法了,同样的,需要源代码,就联系博主吧,呵呵。

回复:2  发表于:2011-06-25 08:57:58
更新于:2011-11-18 10:22:57

基本功能如下:
1.替换旧文件名部分内容
2.用旧文件名的多部分进行组合
3.添加序号,支持数字序号,大小写字母序号,中文序号
4.支持正则替换
5.支持文件名大小写转换等

文件改名工具下载  已下载

源代码下载  已下载

回复:7  发表于:2011-08-31 20:00:30
更新于:2011-11-18 10:22:45

这个工具类似于网上流传的RegexTester,少了些功能,但是个人觉得,多了一个汇总功能,以及结果用GridView,比较直观

编译好的程序下载  已下载

源代码下载  已下载

回复:3  发表于:2011-09-01 08:56:02
更新于:2011-11-18 10:22:33

前段时间,我报了驾校,给了我一个网站,上面有模拟考试,因为家里网速慢,就随手编了个正则小程序把考试题目全部抓下来了,并编写了这个模拟考试软件,
我亲自试用考试了2遍,科目一就得了100分,yeah,其实这个小软件还有点小bug,主要是历史记录里的,因为我考试通过了,也就不管了,谁有兴趣自己整整吧
注意:
1、抓取网站题目的代码也在源代码里,被注释掉了
2、源代码里没有考试题目,需要的话,要下载考试软件,或者运行里面的抓取代码,再抓一遍

考试软件下载  已下载

源代码下载  已下载


©2008 Beinet.cn 版权所有