++ .
# T4 template.
, , #, # script, , # (VisualStudio, MonoDevelop, SharpDevelop, Nant), .
.tt .t4, :
<#@ template language="C#" #>
<#@ output extension=".generated.cs" #>
namespace SomeNamespace
{
<#
foreach(string name in new string[]{"HdlA", "HdlB", })
{#>
public struct <#=name#>
{
private IntPtr _h;
public bool IsValid
{
get { return (_h != IntPtr.Zero); }
}
public <#=name#>(IntPtr h)
{
_h = h;
}
public void Invalidate()
{
_h = IntPtr.Zero;
}
public static implicit operator IntPtr(<#=name#> hdl)
{
return hdl._h;
}
}
<#}#>
}
, ASP.NET, . .cs, , .cs. , , , ( ).
- , . , , , .
,
//# arg-less ctor struct
, , , , , ( [] , new blah() #). .NET , , , , , , .