博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#属性生成器
阅读量:6533 次
发布时间:2019-06-24

本文共 3174 字,大约阅读时间需要 10 分钟。

hot3.png

编写C#里面的属性代码是机械又重复的劳动, 长的变量名还难免敲错, 于是写了一个, 输入类型和名称自动生成属性, 并保存到剪贴板里, 在VS里面粘贴过来就行了.

## generate cs property##   string name##   ==>##   /// #   ///#   /// #   public string Name#   {#       get { return _name; }#       set { _name = value; }#   } private string _name;#use Win32::Clipboard;###sub usage(){    print("Invalid input\n");    print("Input format: 
\n"); print(" Example: string Name\n");}## #sub MakeProperty($$){ ($type,$name) = @_; $member_name = get_member_name( $name ); $property_name = get_property_name( $name ); $s = "#region $property_name\n"; $s .= "///
\n"; $s .= "/// \n"; $s .= "/// \n"; $s .= "public $type $property_name\n"; $s .= "{\n"; $s .= "\tget\n"; $s .= "\t{\n"; if( uc($type) eq "STRING" ) { $s .= "\t\tif ($member_name == null)\n"; $s .= "\t\t{\n"; $s .= "\t\t\t$member_name = string.Empty;\n"; $s .= "\t\t}\n"; } else { if( is_value_type($type) == 0 ) { $s .= "\t\tif ($member_name == null)\n"; $s .= "\t\t{\n"; $s .= "\t\t\t$member_name = new $type();\n"; $s .= "\t\t}\n"; } } $s .= "\t\treturn $member_name;\n"; $s .= "\t}\n"; # set $s .= "\tset\n"; $s .= "\t{\n"; $s .= "\t\t$member_name = value;\n"; $s .= "\t}\n"; $s .= "} private $type $member_name;\n"; $s .= "#endregion //$property_name\n"; $s .= "\n"; output($s);}## param is a value type, example: int int32 float ...#sub is_value_type($){ @values = qw(bool boolean byte sbyte char int16 int32 int64 uint16 uint32 uint64 int float single long double decimal); ($t)= @_; $t = uc($t); foreach $item( @values ) { if ( $t eq uc($item) ) { return 1; } } return 0;}###sub open_output_file(){ open( $filehandle, ">output.cs") or die "open output file fail!"; return $filehandle;}###sub close_output_file(){ close( $filehandle );}###sub output($){ print $filehandle $s;}###sub get_property_name( $ ){ ($val) = @_; return ucfirst($val);}###sub get_member_name($){ ($val) = @_; $m = '_' . lcfirst($val); return $m;}## main#sub main(){ while(<>) { @list = split(" ", $_); if( @list>=2 ) { $type = $list[0]; $name = $list[1]; MakeProperty($type, $name); print "output property: $name\n"; } else { if( @list == 1) { $s = substr($list[0],0,1); if( $s eq 'q' || $s eq 'Q') { quit(); } } usage(); } }}###sub quit(){ close_output_file(); copy_file_content(); exit;}###sub copy_file_content(){ open( $filehandle, "output.cs" ) or die "open output.cs fail"; @array = <$filehandle>; foreach( @array ) { $lines = $lines . $_; } $CLIP = Win32::Clipboard(); $CLIP->Set($lines); close($filehandle); print "Already copy to clipboard.\n";}## main#open_output_file();main();quit();

转载于:https://my.oschina.net/u/234545/blog/40001

你可能感兴趣的文章
如何提高SEO优化团队效率
查看>>
SFB 项目经验-17-Windows 2012 R2-补丁打到最新-问题-KB2982006
查看>>
用hadoop中的libhdfs和fuse-dfs构建快速云存储
查看>>
Apple Watch的非“智能手表”卖点
查看>>
fedora17升级到fedora18
查看>>
单例模式(Singleton)
查看>>
函数指针和指针函数
查看>>
Python的函数参数传递:传值?引用?
查看>>
[转]分享2011年8个最新的jQuery Mobile在线教程
查看>>
android call require api level
查看>>
Mac下android环境搭建
查看>>
创建Visual Studio项目模版向导的几篇参考文章
查看>>
深入浅出SQL Server Replication第一篇:走近Replication(上)
查看>>
[TopCoder][SRM] SRM 562 DIV 2
查看>>
SQLSERVER是怎麽通过索引和统计信息来找到目标数据的(第一篇)
查看>>
LocalAlloc,VirtualAlloc,malloc,new的异同
查看>>
回调函数
查看>>
win7 x64 jdk1.7.0_51
查看>>
这些开源项目,你都知道吗?(持续更新中...)[原创]
查看>>
linux中利用iptables+geoip过滤指定IP
查看>>