How to instantiate PrivateType of nested class

The PrivateType class is very handy when it comes to run unit tests on methods that are either private, either in an internal class.

The constructor signature is:


public PrivateType(
	string assemblyName,
	string typeName
)

You use it this way:


PrivateType t = new PrivateType("Myassembly", "Myassembly.MyNamespaces.MyInternalClass");

MyType result = t.InvokeStatic("MyMethod") as MyType ; // MyType  can be any object type

But when you are in the specific case of testing a method from an nested class of an internal class, there is a little trick

The TypeName argument of the PrivateType’s constructor is not (as we could imagine) “Myassembly.MyNamespaces.MyInternalClass.MyInnerClass” but “Myassembly.MyNamespaces.MyInternalClass+MyInnerClass” (notice the “+”)

So :


PrivateType t = new PrivateType("Myassembly", "Myassembly.MyNamespaces.MyInternalClass+MyInnerClass");

MyType result = t.InvokeStatic("MyMethod") as MyType ; // MyType  can be any object type

Help found thanks to :https://stackoverflow.com/questions/3200875/how-to-instantiate-privatetype-of-inner-private-class/22700890#22700890

Free Ebooks from Syncfusion

Syncfusion is offering a really nice collection of ebooks : the “Succintly” collection

What is really great is that they are covering most of popular technologies and that there is not too much to read : each book contains about 100 pages

Currently the collection is:

  • Localization for .NET Succinctly
  • MATLAB Succinctly
  • NHibernate Succinctly
  • PowerShell Succinctly
  • Android Programming Succinctly
  • Entity Framework Code First Succinctly
  • MongoDB Succinctly
  • R Succinctly
  • Neural Networks Using C# Succinctly
  • HDInsight Succinctly
  • LightSwitch Mobile Business Apps Succinctly
  • BI Solutions Using SSAS Tabular Model Succinctly
  • Twitter Bootstrap Succinctly
  • AngularJS Succinctly
  • Visual Studio 2013 Succinctly
  • Windows Phone 8 Development Succinctly
  • Node.js Succinctly
  • Direct3D Succinctly
  • SQL Server Analysis Services Succinctly
  • Assembly Language Succinctly
  • ASP.NET Web API Succinctly
  • Visual Studio Add-Ins Succinctly
  • Postgres Succinctly
  • Direct2D Succinctly
  • Windows Azure SQL Reporting Succinctly
  • Unit Testing Succinctly
  • TypeScript Succinctly
  • WPF Succinctly
  • iOS Succinctly
  • Windows Store Apps Succinctly
  • Data Structures Succinctly Part 2
  • GIS Succinctly
  • Data Structures Succinctly Part 1
  • Objective-C Succinctly
  • F# Succinctly
  • Knockout.js Succinctly
  • C++ Succinctly
  • ASP.NET MVC 4 Mobile Websites Succinctly
  • LightSwitch Succinctly
  • JavaScript Succinctly
  • HTTP Succinctly
  • PDF Succinctly
  • Git Succinctly
  • jQuery Succinctly

You can find them here : http://www.syncfusion.com/resources/techportal/ebooks

Print a Kendo UI grid with pagination

So I wanted to print a page that has a Kendo ui grid with pagination activated, but I didn’t want to remove the pagination on the page.

I found those two posts that helped me

http://www.telerik.com/forums/print-all-pages-in-a-grid

http://stackoverflow.com/questions/18325025/how-to-detect-window-print-finish

And I ended with this


(function () {

var pageSize = 0;
 var beforePrint = function () {

 // remove paging on grid
 if ($(".k-grid").length > 0) {
 var dataSource = $(".k-grid").data("kendoGrid").dataSource;
 pageSize = dataSource.options.pageSize; // save the current page size
if(pageSize !== undefined){
 dataSource.pageSize(dataSource.total()); // set the size to the number of items
}
 }

};

var afterPrint = function () {

// set paging back
 if ($(".k-grid").length > 0 && pageSize > 0) {
 var dataSource = $(".k-grid").data("kendoGrid").dataSource;
 dataSource.pageSize(pageSize);
 }
 };

// chrome
 if (window.matchMedia) {
 var mediaQueryList = window.matchMedia('print');
 mediaQueryList.addListener(function (mql) {
 if (mql.matches) {
 beforePrint();
 } else {
 afterPrint();
 }
 });
 }

// FF & IE
 //https://developer.mozilla.org/en-US/docs/Web/API/window.onbeforeprint
 window.onbeforeprint = beforePrint;
 window.onafterprint = afterPrint;

}());

Hope it helps someone