【发布时间】:2020-05-07 19:24:05
【问题描述】:
我有一个具有一个实现的通用基类:
public abstract class Setting<T> : ISetting
{
public T DefaultValue { get; }
}
public class SubscribeToNewsletterSetting : Setting<bool>
{
...
}
现在我有了一个设置类,使用以下设置:
public class UserSettings
{
public TSetting GetSetting<TSetting>(int ownerId)
where TSetting : 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);
干杯, 曼努埃尔
【问题讨论】:
-
用户不知道“核心类型”,但知道
SubscribeToNewsletterSetting一个? -
您能否添加所需用法的(伪代码)示例?我不太清楚你所说的“核心类型”是什么意思。我假设
bool在class SubscribeToNewsletterSetting: Settings<bool>? -
@PeterE - 是的。谢谢,我已经编辑了问题
-
也许这是个愚蠢的问题,但这将如何编译
where TType : ISetting?TType没有定义,只有T
标签: c# generics methods type-inference