我如何正确地投这个?

时间:2011-12-14 16:53:48

标签: c# casting

如何正确设置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 个答案:

答案 0 :(得分:2)

没有办法根据你拥有的内容来施展它。 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的成员上失去了通用类型参数的强类型。

答案 1 :(得分:0)

FileAccess fa = new FileAccess();
IAccess<T> test = fa as IAccess<T>;

这是我的答案。我现在可以使用IAccess接口与test进行交互,但分配的具体类型是FileAccess。