Skip to content

Instantly share code, notes, and snippets.

View joymon's full-sized avatar

Joy George Kunjikkuru joymon

View GitHub Profile
@joymon
joymon / AsyncAwait_MainADI
Created June 24, 2015 16:11
Main method to call Write factorial which uses ADI
public void Main()
{
for (int counter = 1; counter < 5; counter++)
{
if (counter % 3 == 0)
{
WriteFactorialAsyncUsingDelegate(counter);
}
else
{
@joymon
joymon / AsyncAwait_WriteFactorialAsyncUsingDelegate
Last active August 29, 2015 14:23
Write factorial using ADI
private void WriteFactorialAsyncUsingDelegate(int facno)
{
Func<int, int> findFact = FindFactorialWithSimulatedDelay;
findFact.BeginInvoke(facno,
(iAsyncresult) =>
{
AsyncResult asyncResult = iAsyncresult as AsyncResult;
Func<int, int> del = asyncResult.AsyncDelegate as Func<int, int>;
int factorial = del.EndInvoke(asyncResult);
Console.WriteLine("Factorial of {0} is {1}", facno, factorial);
@joymon
joymon / AsyncAwait_Main_Sync
Last active August 29, 2015 14:23
Main function calling WriteFactorial in sync
public void Main()
{
for (int counter = 1; counter < 5; counter++)
{
if (counter % 3 == 0)
{
WriteFactorial(counter);
}
else
{
@joymon
joymon / AsyncAwait_WriteFactorial
Created June 24, 2015 15:54
Simple function to write factorial
private void WriteFactorial(int no)
{
int result = FindFactorialWithSimulatedDelay(no);
Console.WriteLine("Factorial of {0} is {1}", no, result);
}
@joymon
joymon / AsyncAwait_FindFactorialWithSimulatedDelay
Created June 24, 2015 15:51
Simple function to find factorial
private static int FindFactorialWithSimulatedDelay(int no)
{
int result = 1;
for (int i = 1; i <= no; i++)
{
Thread.Sleep(500);
result = result * i;
}
return result;
}
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Diagnostics;
using System.Collections.Immutable;
using System.Linq;
namespace JoymonsCode
{
public class TypeNameShouldStartWithCapitalLetterDiagnosticAnalyzer : DiagnosticAnalyzer
{
internal const string DiagnosticId = "TypeNameShouldStartWithCapitalLetter";
private CompilationWithAnalyzers GetAnalyzerAwareCompilation(Compilation compilation)
{
ImmutableArray<DiagnosticAnalyzer> analyzers = ImmutableArray.Create<DiagnosticAnalyzer>(new TypeNameShouldStartWithCapitalLetterDiagnosticAnalyzer());
CompilationWithAnalyzers compilationWithAnalyzers = new CompilationWithAnalyzers(compilation, analyzers,
GetAnalyzerOptions(),
new CancellationToken());
return compilationWithAnalyzers;
}
public async void TestRoslynCompilationWithAnalyzers()
{
Compilation compilation = GetSimpleCompilation();
CompilationWithAnalyzers compilationWithAnalyzers = GetAnalyzerAwareCompilation(compilation);
ImmutableArray<Diagnostic> diagnosticResults = await compilationWithAnalyzers.GetAllDiagnosticsAsync();
if (diagnosticResults.Length == 0)
{
ImmutableArray<Diagnostic> diagnostics = Compile(compilationWithAnalyzers.Compilation);
ShowDiagnostics(diagnostics);
private void ShowDiagnostics(ImmutableArray<Diagnostic> diagnostics)
{
foreach (Diagnostic diag in diagnostics)
{
Console.WriteLine(diag);
}
}
private ImmutableArray<Diagnostic> Compile(Compilation compilation)
{
string outputDllFilePathName = GetOutputFilePath();
EmitResult result = compilation.Emit(outputDllFilePathName);
Console.WriteLine(" Compilation result = {0}", result.Success);
return result.Diagnostics;
}