【发布时间】:2018-05-18 05:51:50
【问题描述】:
基本上,我只是认为在我的项目中传递类型名称时很难看。我知道您不能使用实现该接口的接口,因为它是一个恰好实现原始接口的新接口,对吗?
public class GenericFactory<T, TTypeEnum> : IGenericFactory<T, TTypeEnum>
{
private readonly IIndex<TTypeEnum, Func<CCompParms, T>> _factory;
public GenericFactory(IIndex<TTypeEnum, Func<CCompParms, T>> factory)
{
_factory = factory;
}
public T Create(TTypeEnum serviceType, CCompParms comp)
{
return _factory[serviceType](comp);
}
}
public interface IGenericFactory<T, TTypeEnum>
{
T Create(TTypeEnum serviceType, CCompParms comp);
}
我试过了:
public interface FriendlyName : IGenericFactory<T, TTypeEnum>
{
}
但是当我尝试执行以下操作时,无论我如何施放它都无法施放。
IGenericFactory<T, TTypeEnum> inter = GetTheInterface();
FriendlyName fn = (inter as FriendlyName);
有没有办法让类型名称友好?
【问题讨论】:
-
我认为您能做的最好的事情是
using ALIAS = TYPE;声明,但我建议您不要这样做,因为这样做并不常见,这样会使您的代码更难遵循。 -
我也需要在每个班级都这样做,对吧?这是一个相当大的项目,我可以看到人们在复制代码时可能会感到困惑,突然之间他们在任何地方都找不到实际上是别名的“类型”。
-
没错,这是另一个缺点。
-
@john 感谢您的建议,我会牢记这一点,并询问一些同行的想法。
-
相关问题typedef in C#
标签: c# generics interface user-friendly