Ограничения на параметры типа - получить значение из словаря на основе типа - PullRequest
0 голосов
/ 10 марта 2011

Код:

private static Dictionary<Type, IObserverComponent> _components;
public static T Get<T>()
        where T : Type
    {
        return _components[T] as T;
    }

Как я могу заставить это работать?Он говорит: «T» является «параметром типа», но используется как «переменная»

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Вам нужно использовать typeof(T), чтобы все заработало.

public static T Get<T>()  where T : Type
{
    return _components[typeof(T)] as T;
} 
1 голос
/ 10 марта 2011

_component[someKey] возвращает IObserverComponent так как вы можете заставить свой метод возвращать T?

Разве ваш метод не должен быть таким?

public static IObserverComponent Get<T>()
        where T : Type
{
    return _components[typeof(T)];
}
...