Код: Выделить всё
[Fact]
public void TupleKey()
{
var first = new object();
var table = new ConditionalWeakTable();
var context = table.GetValue( new Key( first, new object() ), key => new object() );
// .. table has one entry here.
GC.Collect();
GC.WaitForPendingFinalizers();
Debugger.Break(); // Table is empty here.
}
class Key : Tuple
{
public Key( object item1, object item2 ) : base( item1, item2 ) {}
}
Однако, поскольку есть одна активная ссылка на одну из частей ключа < /code> Object, я бы хотел, чтобы запись в ConditudalWeakTable также оставалась активной и оставалась активной до тех пор, пока все его дети/внутренние ссылки не будут заявлены. об этом и возможных решениях, это было бы Awesome , если бы был слабый образный сет , который каким -то образом можно было бы использовать в качестве ключа к словаря , но из некоторых поисков, это делает Не кажется, что Sleedhashset существует в .net.)
, надеюсь, это описывает мою дилемму. Я в основном хочу использовать CondentalWeakTable (или какой -то эквивалент) для хранения связанного значения (в качестве ввода ключа/значения), но вместо того, чтобы использовать одну (слабую) ссылку в качестве ключа к записи, я хотел бы нравится использовать два (или больше).
- это то, что я ищу, чтобы достичь возможного (без необходимости писать значительный объем пользовательского кода, то есть)?
Подробнее здесь: https://stackoverflow.com/questions/378 ... -comprised
Мобильная версия