2013-04-05 4 views
1

Я создал класс, который является расширением класса словаря, который выглядит следующим образом:Shim Пользовательского словарь

public class PKMRelations : Dictionary<Guid, PKMRelation>, IDisposable 

Теперь я хочу, чтобы Призонной шайбу метода Графа PKMRelations, так что она возвращает значение I хотеть. Обычно я бы просто добавил несколько элементов, но это невозможно из-за текущей конфигурации.

В настоящее время я не могу разобраться, как проложить метод словаря Count. Чтобы иметь возможность сделать это, я должен создать Shim этого конкретного родового словарного класса.

Возможно ли это, и если да, то как я могу это сделать?

ответ

2

Count не является виртуальным методом в словаре, поэтому вы не можете его переопределить! Однако вы можете использовать новое ключевое слово. Таким образом, вы можете добавить следующую проету

new int Count 
{ 
get 
{ 
    //Your intercept code here 
    return base.Count; 
} 
} 
+0

Это скрывает базовый метод, но не отменяет его. Вы должны понимать последствия. Но все-таки хороший и полезный ответ. – Thomas

+0

Действительно, я могу использовать это как временное обходное решение, но мне бы хотелось, чтобы он мог подгонять класс словаря. Практически все методы должны быть гибкими, виртуальными или нет, поэтому это не должно быть проблемой. – CharlieBP

+0

Count - это свойство IDictionary (интерфейс). Это означает, что вы можете использовать проксирование для переноса интерфейса с помощью перехвата свойств. Look @ Castle динамического проксирования или других контейнеров IOC (с функциями перехвата). –