Skip to content

Instantly share code, notes, and snippets.

@mrtank
Created July 18, 2019 14:59
Show Gist options
  • Save mrtank/f7d1236c20e36f5f9cf429f48b54fbeb to your computer and use it in GitHub Desktop.
Save mrtank/f7d1236c20e36f5f9cf429f48b54fbeb to your computer and use it in GitHub Desktop.
internal class User: IUser
{
async Task<TLoginUserResponse> IUser.LoginUser<TLoginUserDTO, TLoginUserResponse>(TLoginUserDTO loginUserDTO)
{
...
var loginUserDTODerived = (LoginUserDTO) (ILoginUserDTO) loginUserDTO;
var dummy = loginUserDTODerived.NewProp;
...
return (TLoginUserResponse) (ILoginUserResponse) new LoginUserResponse
{NewProp = someValue, NewProp2 = someValue2};
}
}
public interface IUser
{
Task<TLoginUserResponse> LoginUser<TLoginUserDTO, TLoginUserResponse>(TLoginUserDTO loginUserDTO)
where TLoginUserDTO : ILoginUserDTO
where TLoginUserResponse : ILoginUserResponse;
}
usage:
var getUserResponse = await user.LoginUser<LoginUserDTO /* having some NewProp */, LoginUserResponse /* having some NewProp */>(new LoginUserDTO
{
DefaultProp1 = someValue, DefaultProp2 = someValue2, NewProp = someValue3
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment