2011-12-14 96 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成員。