Как передать параметр, который определяется как интерфейс <generictype>? - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь использовать метод с параметром, который представляет собой интерфейс с чем-то вроде общего типа в угловых скобках, но я не знаю, как передать в него свое значение.

Метод определен примерно так:

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.

Я попытался привести его, хотя это избавляет от ошибки компиляции, оно выдает исключение во время выполнения

Невозможно привести объект типа 'MyNameSpace.MyParticularSettingType 'для ввода' SettingsNamespace.ISetting`1 [MyNameSpace.MyParticularSettingType]

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

Что именно я должен делать?

1 Ответ

0 голосов
/ 25 мая 2018

Попробуйте вызвать метод таким образом.

Settings.UpdateSetting<string>(new MyParticularSettingType { Value = "settingvalue"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...