Skip to content

Instantly share code, notes, and snippets.

@brunomlopes
Last active August 29, 2015 14:24
Show Gist options
  • Save brunomlopes/db237aa1d4720b3a65aa to your computer and use it in GitHub Desktop.
Save brunomlopes/db237aa1d4720b3a65aa to your computer and use it in GitHub Desktop.
c# Type inference failed me?
using System.Linq;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
// Error 1 The type arguments for method 'ConsoleApplication4.Program.MethodCall<TResult,TIndex,TTransformer>(TIndex)' cannot be inferred from the usage. Try specifying the type arguments explicitly. d:\documents\documents\visual studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Program.cs 9 13 ConsoleApplication4
MethodCall(new MultiLanguage_EntityIndex_MapReduces());
}
public static IQueryable<TResult> MethodCall<TResult, TIndex, TTransformer>(TIndex index)
where TIndex : AbstractMultiLanguageMultiMapIndexCreationTask<TResult, TTransformer>, new()
where TResult : IMultiLanguageReduceResult
where TTransformer : AbstractMultiLanguageTransformerCreationTask<TResult>, new()
{
return null;
}
}
class MultiLanguage_EntityIndex_MapReduces :
AbstractMultiLanguageMultiMapIndexCreationTask<
MultiLanguage_EntityIndex_MapReduces.Result,
MultiLanguage_EntityIndex_MapReduces.Transformer
>
{
public class Transformer : AbstractMultiLanguageTransformerCreationTask<Result>
{
}
internal class Result : IMultiLanguageReduceResult
{
}
}
#region interfaces and abstracts
public abstract class AbstractMultiLanguageTransformerCreationTask<T>
: AbstractTransformerCreationTask<T>
{
}
public class AbstractTransformerCreationTask<T> : AbstractTransformerCreationTask
{
}
public class AbstractTransformerCreationTask
{
}
public interface IMultiLanguageReduceResult
{
}
public class AbstractMultiLanguageMultiMapIndexCreationTask<TMultiMapResult, TTransformer> :
AbstractMultiLanguageMultiMapIndexCreationTask<TMultiMapResult>
where TMultiMapResult : IMultiLanguageReduceResult
where TTransformer : AbstractMultiLanguageTransformerCreationTask<TMultiMapResult>, new()
{
}
public abstract class AbstractMultiLanguageMultiMapIndexCreationTask<TMultiMapResult> :
AbstractMultiMapIndexCreationTask<TMultiMapResult>
where TMultiMapResult : IMultiLanguageReduceResult
{
}
public class AbstractMultiMapIndexCreationTask <T>
{
}
#endregion
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment