このコード (c++) を c# に移植するにはどうすればよいですか?
template <class entity_type>
class State {
public:
virtual void Enter(entity_type*) = 0;
virtual void Execute(entity_type*) = 0;
virtual void Exit(entity_type*) = 0;
virtual ~State() { }
};
それが本当に純粋な抽象基底クラスであると仮定すると、次のようになります。
interface State<T>
{
void Enter(T arg);
void Execute(T arg);
void Exit(T arg);
};
ただし、正確な引数渡し規則は厄介です。何をしたいのかを正確に知らなければ、C# で何をすべきかを正確に言うことは困難です。おそらく、void FunctionName(ref T arg)
より適切かもしれません。
ある種のもの:
interface State<T> : IDisposable
{
void Enter(T t);
void Execute(T t);
void Exit(T t);
}
public abstract class State<entity_type>
{
public abstract void Enter(entity_type obj);
public abstract void Execute(entity_type obj);
public abstract void Exit(entity_type obj);
}
これはうまくいくようです:D
あなたはこのように書くことができます
abstract class State<T> : IDisposable where T : EntityType
{
public abstract void Enter(T t);
public abstract void Execute(T t);
public abstract void Exit(T t);
public abstract void Dispose();
}
T を EntityType クラスに修正します。