Как мне правильно разыграть это? - PullRequest
1 голос
/ 14 декабря 2011

Как правильно установить переменную accessBehavior?

public sealed class FileAccess : ProjectAccess, IAccess<File>

    interface IAccess<T> where T : ITfsType



        public abstract class Access<T>
        {
            private IAccess<T> accessBehavior;
            public Access()
            {
                FileAccess fa = new FileAccess();
                accessBehavior = //what to assign?
            }
        }

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Нет способа разыграть его в зависимости от того, что у вас есть.FileAcccess реализует IAccess<File>, но аргумент типа accessBehavior неизвестен.Нет никакой связи между T, который может быть любого типа, и File.

Если у вас было что-то вроде:

private IAccess<File> accessBehavior;

Тогда вы можете просто назначить его.В противном случае вам потребуется базовый интерфейс, не являющийся универсальным, например:

public interface IAccess {
}

public interface IAccess<T> : IAccess {
}


public abstract class Access<T>
{
    private IAccess accessBehavior;

    public Access()
     {
         FileAccess fa = new FileAccess();
         accessBehavior = fa;
     }
 }

Но вы потеряете строгую типизацию параметра универсального типа для членов IAccess.

0 голосов
/ 15 декабря 2011
FileAccess fa = new FileAccess();
IAccess<T> test = fa as IAccess<T>;

Это был мой ответ.Теперь я могу взаимодействовать с тестом через интерфейс IAccess, но конкретный назначенный тип - FileAccess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...