これらのクラスを考えると:
public abstract class HostBase
{}
public abstract class ConfigBase
{}
public abstract class HostBase<TConfig> : HostBase where TConfig : ConfigBase
{
protected internal TConfig Config { get; set; }
}
public class GenericHost : HostBase<Config>
{}
public class HostFactory
{
public static THost Create<THost, TConfig>(TConfig config)
where THost : HostBase<TConfig>, new()
where TConfig : ConfigBase
{
return new THost { Config = config };
}
}
コンパイラがTConfig
fromの型を推測できないのはなぜHostFactory.Create<GenericHost>(new Config())
ですか? TConfig
?の可能なタイプは 1 つしかないように思えます。
ただし、コンパイラから推論エラーは発生しません。
タイプ ' 'は、ジェネリック メソッド ' ' でパラメータ' ' として使用するために
GenericHost
変換可能である必要がありますHostBase<TConfig>
THost
THost HostFactory.Create<THost, TConfig>(TConfig)
これはコンパイルされるため、このエラーは奇妙に思えます: HostBase<Config> h = new GenericHost()
.
私は何が欠けていますか?