gpt4 book ai didi

c# - 两把 key 的集合

转载 作者:行者123 更新时间:2023-11-30 22:47:44 25 4
gpt4 key购买 nike

<分区>

在这个问题的解决方案中我找到了 => General type conversion without risking Exceptions (请参阅问题底部的编辑),我需要缓存一种在两种类型之间进行转换的方法。

因此,给定 Type1 和 Type2 我需要检索一个方法。

在这个问题的答案=> What is the best C# collection with two keys and an object?建议使用字典字典。这与我正在做的类似。

可是我不喜欢。它与集合所要表达的内容不符合逻辑。还要检索我必须做​​的值:

        if ( !_Types.ContainsKey ( s.GetType () ) )
{
type1Cache = new Dictionary<Type, ConversionCache> ();

_Types.Add ( s.GetType (), type1Cache );
}
else
{
type1Cache = _Types[s.GetType ()];
}

if ( !type1Cache.ContainsKey ( value.GetType () ) )
{
// We havent converted this type before, so create a new conversion
type2Cache = new ConversionCache ( s.GetType (), value.GetType () );

// Add to the cache
type1Cache.Add ( value.GetType (), type2Cache );
}
else
{
type2Cache = type1Cache[value.GetType ()];
}

有点啰嗦

我只是想做类似的事情

        if ( !_Types.ContainsKey ( s.GetType (), value.GetType() ) )
{
cache = new ConversionCache ( s.GetType (), value.GetType () );

_Types.Add ( s.GetType (), value.GetType(), cache);
}
else
{
cache = _Types[s.GetType (), value.GetType()];
}

一种解决方案是连接类型的字符串值。像这样的东西:

        if ( !_Types.ContainsKey ( s.GetType ().ToString() + ":" +  value.GetType().ToString() ) )
{
cache = new ConversionCache ( s.GetType (), value.GetType () );
_Types.Add ( s.GetType ().ToString() + ":" + value.GetType().ToString(), cache);
}
else
{
cache = _Types[s.GetType ().ToString() + ":" + value.GetType().ToString()];
}

我知道它在这种情况下会起作用,因为类型和它的字符串表示之间存在一对一的关系。

但这闻起来很糟糕,并且在其他情况下不起作用。

有更好的方法吗?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com