我在用Autofac注册IRequest和IRequestHandler接口时遇到麻烦。此代码有效:
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(Ping).GetTypeInfo().Assembly).AsImplementedInterfaces();
builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
Run Code Online (Sandbox Code Playgroud)
现在,我想使其更加灵活,以避免必须注册使用接口的所有类。
我没有运气尝试过这个:
builder.RegisterGeneric(typeof(IRequest<>)).AsImplementedInterfaces();
builder.RegisterGeneric(typeof(IRequestHandler<,>)).AsImplementedInterfaces();
Run Code Online (Sandbox Code Playgroud)
这是我的Ping班:
public class Ping : IRequest<Pong>
{
public string Message { get; set; }
}
public class Pong
{
public string Message { get; set; }
}
public class PingHandler : IRequestHandler<Ping, Pong>
{
public Pong Handle(Ping message)
{
return new Pong { Message = message.Message + " Pong" };
}
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我试图将一个数组分配给我的letter.charData,但我收到此错误:
IntelliSense:表达式必须是可修改的左值
我试图将我的数组arr添加到letter.charData
提前致谢!
struct _Letter{
char character;
int width;
int charData[8][5];
};
typedef struct _Letter Letter;
Letter *allocLetter(void)
{
Letter *letter;
letter = (Letter*) malloc(1 * sizeof(Letter));
letter->character = NULL;
letter->width = NULL;
/* charData? */
return letter;
}
int main(void)
{
Letter letter = *allocLetter();
int arr[8][5] =
{
0,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0,
1,0,0,0,0
};
letter.character = '1';
letter.charData = arr;
return(0);
}
Run Code Online (Sandbox Code Playgroud)