如何正确设置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?
}
}
答案 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。