如何传递定义为接口<generictype>的参数?

时间:2018-05-25 07:58:40

标签: c# visual-studio generics

我正在尝试使用带有参数的方法,该参数是尖括号中似乎是通用类型的接口,但我不知道如何将值传递给它。

该方法定义如下:

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>

但是在参数上,我收到一个错误。

  

无法从MyNameSpace.MyParticularSettingType转换为SettingsNamespace.ISetting&lt; MyNameSpace.MyParticularSettingType&gt;

我已经尝试过它,但是当它摆脱编译错误时,它会在运行时抛出异常

  

无法转换类型&#39; MyNameSpace.MyParticularSettingType&#39;输入&#39; SettingsNamespace.ISetting`1 [MyNameSpace.MyParticularSettingType]

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

我到底应该做什么?

1 个答案:

答案 0 :(得分:4)

尝试以这种方式调用方法。

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