在我看来,Context类是一个控制台,其对象可以调用任何包含的函数,例如WCF Ria服务中的Datacontext和DomainContext.我能正确理解这个概念吗?如果是这样,我在什么情况下需要在我自己的类层次结构中创建上下文类?
除了DataContext之外,.net框架还有哪些其他众所周知的Context类?
我想将本地对象传递给事件处理程序.我怎样才能做到这一点?例如,如何在事件处理函数"hyperlinkButton_Click"中引用在下面的main函数中声明的"graphic"对象?
void main()
{
Graphic graphic = new Graphic();
hyperlinkButton.Click+=new RoutedEventHandler(hyperlinkButton_Click);
}
void hyperlinkButton_Click(object sender, EventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud) 我正在使用React new Context API来管理组件状态,以下是我的基本代码结构:
对于每个功能组件,我都有一个Provider类来管理其状态信息。例如EditFormCanvasProvider:
class EditFormCanvasProvider extends React.Component<Props, State> {
state = {
controlsInfo: []
}
render() {
return (
<EditFormCanvasContext.Provider value={this.state}>
{this.props.children}
</EditFormCanvasContext.Provider>
)
}
}
export default EditFormCanvasProvider;
Run Code Online (Sandbox Code Playgroud)为了从其他组件使用所需的提供程序,将创建一个使用者javascript文件,示例代码如下:
export default function FormBuilderConsumers(props) {
const { children } = props;
return (
<FormBuilderContext.Consumer>
{FormBuilder =>
<EditFormCanvasContext.Consumer>
{
EditFormCanvas => children({ FormBuilder, EditFormCanvas })
}
</EditFormCanvasContext.Consumer>
}
</FormBuilderContext.Consumer>
)
}
Run Code Online (Sandbox Code Playgroud)在FormBuilder功能性javascript组件文件中,该文件使用FormBuilderConsumers。代码如下:
const FormBuilder = () => {
return (
<FormBuilderConsumers>
{(appData) =>
<div >
<Modal dismissible={true}
isOpen={appData.FormBuilder.modalIsOpen}
prompt={appData.FormBuilder.modalPrompt} …Run Code Online (Sandbox Code Playgroud)在下面的代码中,我想使用geometryService(第三方提供的实用程序类)来顺序计算几个形状区域.我失败了,因为第二次区域计算必须等到第一次计算结束.要解决此问题,我可以将第二个区域计算放入完成计算事件处理程序,但代码很乱.有没有更好的方法让我geometryService.AreasAndLengthsAsync(secondShape)等待执行直到geometryService.AreasAndLengthsAsync(firstShape)执行完毕?
Shape firstShape = new Shape();
Shape secondShape = new Shape();
GeometryService geometryService = new GeometryService();
geometryService.AreaAndLengthsCompleted += GeometryService_AreasAndLengthsCompleted;
geometryService.AreasAndLengthsAsync(firstShape);
geometryService.AreasAndLengthsAsync(secondShape);
private void GeometryService_AreasAndLengthsCompleted(object sender, AreasAndLengthsEventArgs args){ }
Run Code Online (Sandbox Code Playgroud)