文号
833499
阅读
9055
回复
4
收藏
3
代码模板 使用代码模板生成代码
2017/04/28
IP:江苏

很简单的东西 用于批量生产代码

codeTemplate.gif

Buttons LeftThumbX LeftThumbY LeftTrigger RightThumbX RightThumbY RightTrigger


<textblock text="{0} = ">


<textblock text="{{Binding {0}}}">




<stackpanel grid.column="0">
   <textblock text="Buttons = ">
   <textblock text="LeftThumbX = ">
   <textblock text="LeftThumbY = ">
   <textblock text="LeftTrigger = ">
   <textblock text="RightThumbX = ">
   <textblock text="RightThumbY = ">
   <textblock text="RightTrigger = ">
</textblock></textblock></textblock></textblock></textblock></textblock></textblock></stackpanel>


<stackpanel grid.column="1">
   <textblock text="{Binding Buttons}">
   <textblock text="{Binding LeftThumbX}">
   <textblock text="{Binding LeftThumbY}">
   <textblock text="{Binding LeftTrigger}">
   <textblock text="{Binding RightThumbX}">
   <textblock text="{Binding RightThumbY}">
   <textblock text="{Binding RightTrigger}">
</textblock></textblock></textblock></textblock></textblock></textblock></textblock></stackpanel>
</textblock></textblock>
 namespace CodeTemplate
{
    class Program
    {
        static void Main(string[] args)
        {
            var Input = string.Empty;
            while (true)
            {
                Input = Console.ReadLine();
                switch (Input.ToLower())
                {
                    case "?":
                        Help.Instance.Write();
                        break;
                    case "c":
                    case "cls":
                        Console.Clear();
                        break;
                    case "t":
                    case "template":
                        Console.Clear();
                        Template.Instance.ReadTemplate();
                        Console.Clear();
                        break;
                    default:
                        ClearCurrentConsoleLine();
                        BuildCode.Instance.Read(Input);
                        break;
                }

            }
        }

        public static void ClearCurrentConsoleLine()
        {
            int currentLineCursor = Console.CursorTop - 1;
            Console.SetCursorPosition(0, currentLineCursor);
            Console.Write(new string(' ', Console.WindowWidth));
            Console.SetCursorPosition(0, currentLineCursor);
        }
    }
}

 class Template
    {
        static Template _Instance = new Template();
        public static Template Instance
        {
            get
            {
                return _Instance;
            }

        }
        private Template()
        {

        }

        public void ReadTemplate()
        {
            Console.WriteLine("请输入 Template");
            var input = Console.ReadLine();
            var Template = new StringBuilder();
            while (input != "end" && input != "e")
            {
                Template.Append(input);
                input = Console.ReadLine();
            }
            CodeTemplate = Template.ToString();
        }
        public string CodeTemplate { get; private set; }
    } 




class BuildCode
    {
        static BuildCode _Instance = new BuildCode();
        public static BuildCode Instance
        {
            get
            {
                return _Instance;
            }

        }
        private BuildCode()
        {

        }

        public void Read(string Input)
        {
            try
            {
                Console.WriteLine(Template.Instance.CodeTemplate, Input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    } 





[ 修改于9年7个月前 - 2017/04/28 14:41:57 ]
张静茹作者
9年7个月前IP:江苏
833506
1楼
再举个栗子

变量
LeftThumbX
LeftThumbY
RightThumbX
RightThumbY


模板
public event EventHandler<short> Joypad_{0};
Joypad_{0}?.Invoke(this, JoypadKeyState.Gamepad.{0});



生成结果
public event EventHandler<short> Joypad_LeftThumbX;
public event EventHandler<short> Joypad_LeftThumbY;
public event EventHandler<short> Joypad_RightThumbX;
public event EventHandler<short> Joypad_RightThumbY;


Joypad_LeftThumbX?.Invoke(this, JoypadKeyState.Gamepad.LeftThumbX);
Joypad_LeftThumbY?.Invoke(this, JoypadKeyState.Gamepad.LeftThumbY);
Joypad_RightThumbX?.Invoke(this, JoypadKeyState.Gamepad.RightThumbX);
Joypad_RightThumbY?.Invoke(this, JoypadKeyState.Gamepad.RightThumbY);
引用
评论
张静茹作者
9年7个月前IP:江苏
833507
2楼
再举个栗子


变量
Y
None
DPadUp
DPadDown
DPadLeft
DPadRight
Start
Back
LeftThumb
RightThumb
LeftShoulder
RightShoulder
A
B
X



模板
public event EventHandler Joypad_{0};
Joypad_{0}?.Invoke(this, EventArgs.Empty);



结果
public event EventHandler Joypad_Y;
public event EventHandler Joypad_None;
public event EventHandler Joypad_DPadUp;
public event EventHandler Joypad_DPadDown;
public event EventHandler Joypad_DPadLeft;
public event EventHandler Joypad_DPadRight;
public event EventHandler Joypad_Start;
public event EventHandler Joypad_Back;
public event EventHandler Joypad_LeftThumb;
public event EventHandler Joypad_RightThumb;
public event EventHandler Joypad_LeftShoulder;
public event EventHandler Joypad_RightShoulder;
public event EventHandler Joypad_A;
public event EventHandler Joypad_B;
public event EventHandler Joypad_X;



Joypad_Y?.Invoke(this, EventArgs.Empty);
Joypad_None?.Invoke(this, EventArgs.Empty);
Joypad_DPadUp?.Invoke(this, EventArgs.Empty);
Joypad_DPadDown?.Invoke(this, EventArgs.Empty);
Joypad_DPadLeft?.Invoke(this, EventArgs.Empty);
Joypad_DPadRight?.Invoke(this, EventArgs.Empty);
Joypad_Start?.Invoke(this, EventArgs.Empty);
Joypad_Back?.Invoke(this, EventArgs.Empty);
Joypad_LeftThumb?.Invoke(this, EventArgs.Empty);
Joypad_RightThumb?.Invoke(this, EventArgs.Empty);
Joypad_LeftShoulder?.Invoke(this, EventArgs.Empty);
Joypad_RightShoulder?.Invoke(this, EventArgs.Empty);
Joypad_A?.Invoke(this, EventArgs.Empty);
Joypad_B?.Invoke(this, EventArgs.Empty);
Joypad_X?.Invoke(this, EventArgs.Empty);
引用
评论
9年7个月前修改于 9年7个月前IP:四川
833525
3楼

做了个C语言窗口版的


attachment icon codetemp.rar 357.72KB RAR 55次下载

codetemp1.png

codetemp2.png

引用
评论
张静茹作者
8年9个月前IP:江苏
843948
4楼
正确方法是使用 Visual Stuidio的 T4 模板  方便 功能强大的多。。。。。。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的