2011-12-14 70 views
1

如何正确设置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? 
      } 
     } 
+3

这很混乱,你有一个名为ITfsType的类型为`string`的参数和一个名为ITfsType的类型? – 2011-12-14 16:57:01

回答

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

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

2

没有办法根据你所拥有的投射它。 FileAcccess implements 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成员。