推断方法返回类型,它是另一种类型的通用类型

问题描述 投票:1回答:1

我有一个具有一个实现的通用基类:

public abstract class Setting<T> : ISetting
{
    public T DefaultValue { get; }
}

public class SubscribeToNewsletterSetting : Setting<bool>
{
   ...
}

现在我有了一个设置类,使用此设置:

public class UserSettings
{
    ..
    public T GetSetting<T>(int ownerId)
        where TType : ISetting
    {
        ...
    }
}

现在我可以像这样使用UserSettings类:

var setting = settings.GetSetting<SubscribeToNewsletterSetting>(22);
var settingsValue = setting.DefaultValue;

现在,我想知道-是否可以在不指定类型的情况下一步完成此操作:例如:

var settingsValue = settings.GetSettingDefaultValue<SubscribeToNewsletterSetting>(22);

((我不想这样称呼)

var settingsValue = settings.GetSettingDefaultValue<SubscribeToNewsletterSetting, bool>(22);

干杯,曼努埃尔

c# generics methods type-inference
1个回答
0
投票

[如果我正确理解了问题,那么您也想将SubscribeToNewsletterSetting的实例也视为boolean值,如果是的话,那么接下来可以做:

    public class SubscribeToNewsletterSetting : Setting<bool>
    {
        public static implicit operator bool(SubscribeToNewsletterSetting value)
        {
            // your code here of how to convert instance of SubscribeToNewsletterSetting  to boolean instead of my return default(bool)
            return default(bool);
        }
    }


    public static async Task Main()
    {
        ...
        // Will work fine.
        bool isEnabled = settings.GetSetting<SubscribeToNewsletterSetting>(22);
    }
© www.soinside.com 2019 - 2024. All rights reserved.