bugfix> c# > 投稿

私は、山括弧で囲まれた一般的な型のように見えるインターフェイスであるパラメータを持つメソッドを使用しようとしていますが、値を渡す方法がわかりません。

メソッドは次のように定義されます:

public static class Settings {
    public static void UpdateSetting<TType>(ISetting<TType> setting)
    {
        // Do its thing
    }
}

今、私はこのような私のコードを使用してこれを呼び出そうとします:

Settings.UpdateSetting<MyParticularSettingType>(new MyParticularSettingType { Value = "settingvalue"});

と、他の場所で...

public class MyParticularSettingsType : Setting<string>

そして...

public abstract class Setting<TType> : ISetting<TType>

しかし、パラメーターでは、エラーが発生します。

Cannot convert from MyNameSpace.MyParticularSettingType to SettingsNamespace.ISetting<MyNameSpace.MyParticularSettingType>

私はそれをキャストしようとしましたが、それはコンパイルエラーを取り除き、実行時に例外をスローします

Unable to cast object of type 'MyNameSpace.MyParticularSettingType' to type 'SettingsNamespace.ISetting`1[MyNameSpace.MyParticularSettingType]

Settings.UpdateSetting((ISetting<MyParticularSettingType>)(new MyParticularSettingType { Value = "settingvalue" }));

私は正確に何をすることになっていますか?