生成代码文件如何生成 int? i = null 语句 由于Vs2005已经支持INT和DataTime类型为空,但我在重写代码生成器时,想在生成的CS文件中无法加入类似int? i = null; 这样的语句,在MSDN苦查无果,特在此请教. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没见过int? i = null这样的语法,2.0里的新语法吗 NET 2.0 里的INT DataTime等类型已经支持赋值为null具体语法为int? i = null;DataTime? dt = null; int i = null;为什么要加? 楼上,不加?就无法赋null对CodeDom不熟悉不过楼主可以尝试生成这样的代码:Nullable<int> i = null; Nullable<int> i = null;是等效于int? i = null;但就是不知道如何自动生成呀。 CodeFunction FindFunction(CodeClass _codeClass,string _functionName,object _returnType,vsCMAccess _access,string[] _params,bool _addOverride) { foreach(CodeElement element in _codeClass.Members) { switch (element.Kind) { case vsCMElement.vsCMElementFunction: if (element.Name == _functionName) { return (CodeFunction)element; } break; } } //没找到则新建一个 CodeFunction codeFucntion = _codeClass.AddFunction(_functionName,vsCMFunction.vsCMFunctionFunction ,_returnType,0,_access,0); if (_params != null) { int i; for (i = 0 ; i < _params.GetLength(0) / 2; ++i) { codeFucntion.AddParameter(_params[i * 2],_params[i * 2 + 1],i); } } if (_addOverride) { EditPoint ep = codeFucntion.StartPoint.CreateEditPoint(); string s = ep.GetText(ep.Line); string ss = s.Trim(); int n = s.IndexOf(" ",s.IndexOf(ss.Substring(0,1))); if (n > 0) { ep.MoveToLineAndOffset(ep.Line,3 + n); ep.Insert(" override "); } } return codeFucntion; } //添加BeforeInquire方法 cf = FindFunction(_codeClass,"BeforeInquire",vsCMTypeRef.vsCMTypeRefBool,vsCMAccess.vsCMAccessProtected,null); ep = cf.EndPoint.CreateEditPoint(); ep.MoveToLineAndOffset(ep.Line - 1,1); ep.Insert( AutoCodeCSharp.TabStr(3) + "// 在下面进行数据查询前的附加判断或者处理,返回false则放弃操作。可以在这里进行自定义查询或者使用AddCondition方法增加查询条件。\r\n\r\n"); ep.Insert("int? i = null;");//这样不可以? 自动生成CS文件,生成的CS文件里需要有int? i = null;这样的一行。 用于errorprovider的icon图标哪里有下载? 如何把Excel数据导入到sql2000中(用代码) vs 2005 c# 部署 问题. 这样的功能不知能否实现,调用飞信发送短信的窗口 求助: 计算md5 C#转C [求助]DataSet与DataTable的问题,请大家帮忙 关于C#里的XML注释的问题 .net framework里面有没有“计算四则运算表达式”的类啊?斑竹, 请教is的用法 请问怎么用DataRow 的NewRow()往数据库插入一个新行? 怎么获取命令行执行后的结果? 请教:做一个票据打印的思路和方法?
具体语法为
int? i = null;
DataTime? dt = null;
为什么要加?
不过楼主可以尝试生成这样的代码:Nullable<int> i = null;
是等效于
int? i = null;
但就是不知道如何自动生成呀。
{
foreach(CodeElement element in _codeClass.Members)
{
switch (element.Kind)
{
case vsCMElement.vsCMElementFunction:
if (element.Name == _functionName)
{
return (CodeFunction)element;
}
break;
}
} //没找到则新建一个
CodeFunction codeFucntion = _codeClass.AddFunction(_functionName,vsCMFunction.vsCMFunctionFunction ,_returnType,0,_access,0);
if (_params != null)
{
int i;
for (i = 0 ; i < _params.GetLength(0) / 2; ++i)
{
codeFucntion.AddParameter(_params[i * 2],_params[i * 2 + 1],i);
}
} if (_addOverride)
{
EditPoint ep = codeFucntion.StartPoint.CreateEditPoint();
string s = ep.GetText(ep.Line);
string ss = s.Trim();
int n = s.IndexOf(" ",s.IndexOf(ss.Substring(0,1)));
if (n > 0)
{
ep.MoveToLineAndOffset(ep.Line,3 + n);
ep.Insert(" override ");
}
}
return codeFucntion; } //添加BeforeInquire方法
cf = FindFunction(_codeClass,"BeforeInquire",vsCMTypeRef.vsCMTypeRefBool,vsCMAccess.vsCMAccessProtected,null);
ep = cf.EndPoint.CreateEditPoint();
ep.MoveToLineAndOffset(ep.Line - 1,1);
ep.Insert( AutoCodeCSharp.TabStr(3) + "// 在下面进行数据查询前的附加判断或者处理,返回false则放弃操作。可以在这里进行自定义查询或者使用AddCondition方法增加查询条件。\r\n\r\n");
ep.Insert("int? i = null;");//这样不可以?