我在Visual Studio 2012中创建了一个新的类库项目,用于定义数据类,以便首先使用Entity Framework代码创建新的数据库。所以我创建了3个类:
产品如下:
namespace MyClassLibrary
{
public class Product
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
}
}
下一个类别:
using System.Collections.Generic;
namespace MyClassLibrary
{
public class Department
{
public virtual int ID { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
}
和ICategoryDataSource为下一个:
using System.Linq;
namespace MyClassLibrary
{
public class ICategoryDataSource
{
IQueryable<Product> Products { get; }
IQueryable<Category> Categories { get; }
}
}
在最后一节课中,我收到下一条错误消息:'MyClassLibrary.ICategoryDataSource.Products.get'必须声明一个正文,因为它没有标记为abstract或extern。自动实现的属性必须定义get和set访问器。
我不需要这里的setter,请告知我如何避免使用set访问器。
答案 0 :(得分:3)
通过最后一个代码部分中的名称,我假设您希望ICategoryDataSource
成为一个接口,而不是一个类:
using System.Linq;
namespace MyClassLibrary
{
public interface ICategoryDataSource
{
IQueryable<Product> Products { get; }
IQueryable<Category> Categories { get; }
}
}
答案 1 :(得分:2)
在仅具有自动getter或自动设置器的具体类中,您不能拥有自动属性。您如何将数据导入该属性以便能够将其拉出来?
你可以然后在抽象类或接口中这样做,这两者都有效地说“我不关心数据如何进入这里,我只是要求它可以被拉出来。” / p>
您可能需要的是私人制定者。
public IQueryable<Product> Products { get; private set; }
在任何课程中都是完全有效的。