下面是代码:
public interface IObserver<T> where T : StackEventData<T>
{
void HandleEvent(StackEventData<T> eventData);
}
public class Observer<T> : IObserver<T> where T : StackEventData<T>, new()
{
public StringBuilder Log = new StringBuilder();
public void HandleEvent(StackEventData<T> eventData)
{
Log.Append(eventData);
}
}
public class StackOperationsLogger
{
private readonly Observer<T> observer = new Observer<T>();
}
我需要在StackOperationsLogger中初始化Observer观察器,而不要使StackOperationsLogger通用。有什么建议么?
答案 0 :(得分:2)
提供了一些类似于以下内容的类定义:
public class StackOperationsLogger
{
private Observer<ConcreteType> observer = new Observer<ConcreteType>();
}
您可以尝试以下方法:
ConcreteType
显然,您必须相应地设计您的课程。上面刚刚强调了类的“名称”应该是什么,以及a = ['g', 'h', 'y']
df['array']=a
print(df)
index col1 col2 array
0 1 a b g
1 1 r t h
2 2 e e y
类的期望值,您将定义-bad name ..您还必须对此进行更改。
答案 1 :(得分:2)
一个巨大的问题是接口的原始通用定义。
import React, { Component } from 'react';
import AddModal from './addmodal';
class Page extends Component {
constructor() {
super();
this.state = {
isModalOpen: false
};
}
// ... //skip
toggleModal = () => {
this.setState((prevState) => ({
isModalOpen: !prevState.isModalOpen
}));
};
render() {
return (
<div>
<button onClick={this.handleAdd}> Add </button>{' '}
<AddModal
isOpen={this.state.isModalOpen}
toggleModal={this.toggleModal}
/>
</div>
);
}
}
import React, { Component } from 'react';
class AddModal extends Component {
// ... skip
render() {
return (
<modal inOpen={this.props.isOpen}>
<Button onClick={this.props.toggleModal}>Close</Button>
//... skip
</modal>
);
}
}
export default AddModal;
由于类型约束是递归定义的,因此您不能以所需的方式使用它。本质上,类型T必须是这样的:public interface IObserver<T> where T : StackEventData<T>
等。我认为这不是您要寻找的。 p>
我感觉这就是您想要的。
StackEventData<StackEventData<StackEventData<StackEventData<T>>>>