Object
TValue として許可するカスタム IDictionary をセットアップしようとしています。
これは次のようになります。
public class NullTolerantDictionary<TKey, TValue>
: Dictionary<TKey, TValue> where TValue : class
{
public TValue this[TKey key]
{
get
{
TValue value;
if (TryGetValue(key, out value))
{
return value;
}
else
{
return DependencyProperty.UnsetValue;
}
}
}
}
これをコンパイルすると、次のように表示されます。
タイプ 'object' を 'TValue' に暗黙的に変換することはできません。
これを修正するために、型制約を次のように変更します。
where TValue : object
(object
クラスの代わりに)
次に、次のメッセージが表示されます。
制約を特別なクラス 'オブジェクト' にすることはできません
どうすればこれを回避できますか?
object
を制約にできない理由を説明するための追加クレジット。