2

次のクラス定義があります。

public class Registry
{
     private List<Action<IThing>> _thingActions = new List<Action<IThing>>();

     public Register<TDerivedThing>(Action<TDerivedThing> thingAction)
          where TDerivedThing : IThing
     {
        // this line causes compilation issue
        _thingActions.Add(thingAction);
     }     
}

Action<TDerivedThing>に割り当てることができないと文句を言うのはなぜAction<IThing>ですか? これを解決するにはどうすればよいですか?

4

3 に答える 3

1

もちろん、EventArgs がオブジェクトであっても、同様にList<EventArgs>割り当てることはできません。List<object>

 public void Register<TDerivedThing>(Action<TDerivedThing> thingAction)
      where TDerivedThing : IThing
 {
    _thingActions.Add(t => thingAction(t as TDerivedThing));
 }

解決策になる可能性がありますが、アプリケーションがわかりません。

于 2013-04-17T13:27:24.243 に答える