C#
public static Assembly Compile(string src) { var snip = new CodeSnippetCompileUnit(src); var codedom_option=new Dictionary<string, string>(); codedom_option.Add("CompilerVersion", "v3.5"); using (var provider = new Microsoft.CSharp.CSharpCodeProvider(code</string,>…
昨日のつづき。 演算子オーバロードかわいいかわいい!と言ってるうちにこんなのができた。 string html=HtmlBuilder.Begin(t=> t.html/( +t.head/( +t.title["my home page"] +t.meta("description","myhomepage")) +t.body/( +t.h1["WELCOME!!!"] +t.ul/t.…
生成ターゲット: <html> <head><title>hoge</title></head> <body> <h1>hoge</h1> <p><strong>hoge</strong></p> <p class="hoge" id="the_text">this is the text</p> <ul> <li>item1</li> <li>item2</li> <li>item3</li> </ul> </body> </html> var list=new[]{"item1","item2","item3"}; //plan a HtmlBuilder.Begin(s=>{ s.htm…
public static class Extention { public static void should_be<T>(this T th,T expected) {Assert.AreEqual(th,expected);} } で、 //before Assert.AreEqual(obj.DoSomething(),"result"); Assert.That(obj.DoSomething(),Is.EqualTo("result")); //2.4の新</t>…
ことの発端。 TextWriter writer=new SomeTextWriter("hogehoge"); tw.Write( Something() ); tw.Write( AnotherSomething() ); なんてコードがあって。 デバッグのために、Writeされた内容を表示したくなったとしよう(というか、したんですよ)。 string con…
参照:はてなフォトライフAtomAPIとは - はてなキーワードサービスによってnonce/digestをbase64エンコードしたりしなかったりするらしい。はてなのはする。 準備する情報 string username="hogehoge"; string password="pass"; DateTime created=DateTime.No…
――まあタイトルは釣りで、「作りかけてみたよ」ってなもんですがね。.net2.0のジェネリクスとリフレクションを駆使してRuby on RailsのActiveRecord風にORマッピングするというもくろみ。 元ネタは生産性を向上させるメタオブジェクト技術 - 分裂勘違い君劇…
namespace Sandbox { class Hoge { public int mem1; public char mem2 { get { return 'a'; } } public void mem3() { } public string mem4; public double mem5(int i) { return 0.0; } public int mem6 { get { return 0; } set { } } } class Program {…
http://friends.newtelligence.net/clemensv/PermaLink,guid,46715ffd-2470-4396-a63c-f037ecd2fa0a.aspx というわけで対処としてはTimeSpanなパブリックメンバにXmlIgnore属性をつけて、あらためてstringなメンバをパブリックで追加と。ああ嫌らしい。
The Old .NET Questions Forum - Another CodeDom Questionによると、ないようだ。FUCK. CodeSnippetTypeMemberを使えばどうにかなる気がする。
http://www.codeproject.com/csharp/dynamicinvokedll.asp ダイナミックローディングにはこんな方法があるよ、と。ここから妄想。たとえば interface IHoge { void Hage([MarshalAs(...)]string str); int Fuga(int,int); }なんてインタフェースだけ定義して…
これ以外と知られてないと思いますよ!というか使う機会がほとんどないし。 class Hoge { [SomeAttr] //SomeAttrはHogehogeメソッドに適用される。では、メソッドの戻り値(string)に属性を適用するには? string Hogehoge() {} }MSDN:属性の対象 (C#) clas…
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0"> <Header> <Title>nimpl</Title> <Shortcut>nimpl</Shortcut> <Description>throw NotImplementedException</Description> <Author>gnarl</Author> </header></codesnippet></codesnippets>
src: class A<T> where T : A<T> { static A() { Console.WriteLine("init:" + typeof(T).Name); } } class AA : A<AA> { } class BB : A<BB> { } class CC : A<Program> { } //err! class Program { static void Main(string[] args) { AA a = new AA(); BB b = new BB(); } } disp</program></bb></aa></t></t>…
もはやantlrと何の関係もない……!
まずデータ構造を定義してだな(割愛)、あとはパーサを改造して、
試行錯誤した結果grammerはこんなふうになった。 options { language = "CSharp"; namespace = "Parser"; // encapsulate code in this namespace } class SExprParser extends Parser; options { k = 2; } sexpr : atom | list | QUOTE sexpr ; list : OPAR…
すっきりした方法がみつからないので、とりあえずNANTをつかって自動化している。 //exec_antlr.build //default.build このふたつをプロジェクトdirにいれておいて、ビルドイベントで cd $(ProjectDir) nant を実行。生成された./generated内のファイルは手…
ドキュメントはここ。