C
C#6d ago
Davaaron

Why do i need to pass in the generics here?

Hey, I have this code
using GitManager.Domain.Models;
using GitManager.GitCLI.Commands.Parsing;

namespace GitManager.GitCLI.Commands
{
public record GitPullBranchCommandInput : IGitCommandInput
{
public string LocalPath { get; }
/// <summary>
/// When not specified, the current local checked out branch will be pulled.
/// </summary>
public string? Branch { get; }

public GitPullBranchCommandInput(string localPath, string? branch = null)
{
LocalPath = localPath;
Branch = branch;
}
}
public class GitPullBranchCommand : IGitCommand<string, GitPullBranchCommandInput>
{
private readonly IGitCommandStrategy _gitCommandStrategy;

public GitPullBranchCommand(IGitCommandStrategy gitCommandStrategy)
{
_gitCommandStrategy = gitCommandStrategy;
}

public async Task<string> ExecuteAsync(GitPullBranchCommandInput input)
{
//var command = "branch --list --all";
var command = "pull";
var result = await _gitCommandStrategy.ExecuteAsync(command, input.LocalPath);

return result;
}
}
}
using GitManager.Domain.Models;
using GitManager.GitCLI.Commands.Parsing;

namespace GitManager.GitCLI.Commands
{
public record GitPullBranchCommandInput : IGitCommandInput
{
public string LocalPath { get; }
/// <summary>
/// When not specified, the current local checked out branch will be pulled.
/// </summary>
public string? Branch { get; }

public GitPullBranchCommandInput(string localPath, string? branch = null)
{
LocalPath = localPath;
Branch = branch;
}
}
public class GitPullBranchCommand : IGitCommand<string, GitPullBranchCommandInput>
{
private readonly IGitCommandStrategy _gitCommandStrategy;

public GitPullBranchCommand(IGitCommandStrategy gitCommandStrategy)
{
_gitCommandStrategy = gitCommandStrategy;
}

public async Task<string> ExecuteAsync(GitPullBranchCommandInput input)
{
//var command = "branch --list --all";
var command = "pull";
var result = await _gitCommandStrategy.ExecuteAsync(command, input.LocalPath);

return result;
}
}
}
and i want to use to probably like this
Branch branch = await gitHandler.ExecuteAsync(new GitPullBranchCommandInput(""));
Branch branch = await gitHandler.ExecuteAsync(new GitPullBranchCommandInput(""));
But it says i cannot the determine the types... why not?! they are clearly given..
3 Replies
reflectronic
reflectronic6d ago
you will have to give the exact error
Davaaron
Davaaron6d ago
The error message is
Error (active) CS0411 The type arguments for method 'IGitCommandHandler.ExecuteAsync<TOutput, TInput>(TInput)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
Error (active) CS0411 The type arguments for method 'IGitCommandHandler.ExecuteAsync<TOutput, TInput>(TInput)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
canton7
canton76d ago
IGitCommandHandler.ExecuteAsync is a method you wrote? How is it supposed to infer TOutput? It doesn't appear as one of the parameters, so it can't use the type of a parameter to figure it out