我有一个课重复了很多次。我的老板让我做通用,但我不确定这意味着什么。任何人都可以帮助或建议如何?抱歉英语不好。我希望这是有道理的。
public class CapacityServiceContext : TableServiceContext
{
public CapacityServiceContext(string baseAddress, StorageCredentials credentials)
: base(baseAddress, credentials)
{
}
public const string TableName = "Capacity";
public IQueryable<Capacity> CapacityTable
{
get
{
return this.CreateQuery<Capacity>(TableName);
}
}
}
提前谢谢。
米娜
答案 0 :(得分:7)
例如,您的代码可能如下所示:
public class ServiceContext<T> : TableServiceContext
{
public ServiceContext(string baseAddress, StorageCredentials credentials)
: base(baseAddress, credentials)
{
}
public const string TableName = typeof(T).Name;
public IQueryable<T> Table
{
get
{
return this.CreateQuery<T>(TableName);
}
}
}
并且会像任何泛型类一样实例化:
ServiceContext<Capacity> context = new ServiceContext<Capacity>(…);
基本上,我已将您班级中Capacity
的每次出现都更改为T
,并通过将<T>
附加到班级名称来使该班级具有通用性。现在,该类也可用于其他类型。
答案 1 :(得分:3)
您可以制作TableServiceContext<T>
,但问题与您的TableName常量有关。除非您可以保证表名始终与通用类的名称相同,否则它看起来不太好。
但是如果你能做出这样的保证,那就看起来像这样:
public class TableServiceContext<T>
{
public TableServiceContext(string baseAddress, StorageCredentials credentials)
: base(baseAddress, credentials)
{
}
public string TableName { get { return typeof(T).Name; } }
public IQueryable<T> Table
{
get
{
return this.CreateQuery<T>(TableName);
}
}
}
答案 2 :(得分:1)
泛型非常受欢迎,可以帮助您的代码更加可重用。
以下是概述,您可以决定如何在项目中最好地使用它。
http://msdn.microsoft.com/en-us/library/512aeb7t(v=VS.100).aspx
答案 3 :(得分:1)
我猜你的老板想要的东西如下:
public class ServiceContext<T> : TableServiceContext
{
public ServiceContext(string baseAddress, StorageCredentials credentials)
: base(baseAddress, credentials)
{
}
public IQueryable<T> Table
{
get
{
return this.CreateQuery<T>(typeof(T).Name);
}
}
}
你应该让他/她确定,你可以按照以下方式使用这个课程:
ServiceContext<Capacity> serviceContext = new ServiceContext<Capacity>();
IQueryable<Capacity> query = serviceContext.Table;
答案 4 :(得分:0)
我假设他建议你在容量方面做出通用。
public class ServiceContext<T> : TableServiceContext {
...
public IQueryable<T> Table {
get {
return this.CreateQuery<T>(typeof(T).Name);
}
}
然后你可以创建一个:
ServiceContext<Capacity>()
没有看到其他课程,我不确定会涉及到什么。
答案 5 :(得分:0)
他可能会询问有关更改CapacityTable属性的信息:
...
public IQueryable<T> Table
{
get
{
return this.CreateQuery<T>(typeof(T).Name);
}
}