C#:如何将 class 属性 公开给一个 class 而不是另一个?
C#: How can I expose a class property to one class but not to another?
我的 class 库中有一个数据合同 "StudentInformation",如下所示:
public class StudentInformation
{
public int StudentId { get; set; }
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public StudentInformation StudentInfo { get; set; }
...
...
}
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
...
}
请求模型发送 StudentId,class 库处理信息并填充属性 "CanChangeBus" 和 "AvailableBuses",然后在响应模型中返回。
我想从请求模型中隐藏属性 "CanChangeBus" 和 "AvailableBuses"。如果我将这些属性的 setter 更改为 "internal",则无法通过调用应用程序设置这些属性,但它们仍然可见。如何隐藏它们以防止调用应用程序的请求模型实例?
public class BasicStudentInformation
{
public int StudentId { get; set; }
}
public class StudentInformation : BasicStudentinformation
{
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public BasicStudentInformation StudentInfo { get; set; }
...
...
}
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
...
}
所以BusChangeRequest只需要看到id,那么它应该只有id。
public class StudentInformation
{
public int StudentId { get; set; }
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public int StudentId { get; set; }
}
//I don't know what is expected as a repsonse? Is StudentInfromation really the correct response
//or is something like "Accepted", "rejected", Fail...???
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
}
使用继承。类似于:
public class StudentBase
{
public int StudentId { get; set; }
}
public class StudentInformation : StudentBase
{
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public StudentBase StudentInfo { get; set; }
...
...
}
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
...
}
我的 class 库中有一个数据合同 "StudentInformation",如下所示:
public class StudentInformation
{
public int StudentId { get; set; }
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public StudentInformation StudentInfo { get; set; }
...
...
}
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
...
}
请求模型发送 StudentId,class 库处理信息并填充属性 "CanChangeBus" 和 "AvailableBuses",然后在响应模型中返回。
我想从请求模型中隐藏属性 "CanChangeBus" 和 "AvailableBuses"。如果我将这些属性的 setter 更改为 "internal",则无法通过调用应用程序设置这些属性,但它们仍然可见。如何隐藏它们以防止调用应用程序的请求模型实例?
public class BasicStudentInformation
{
public int StudentId { get; set; }
}
public class StudentInformation : BasicStudentinformation
{
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public BasicStudentInformation StudentInfo { get; set; }
...
...
}
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
...
}
所以BusChangeRequest只需要看到id,那么它应该只有id。
public class StudentInformation
{
public int StudentId { get; set; }
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public int StudentId { get; set; }
}
//I don't know what is expected as a repsonse? Is StudentInfromation really the correct response
//or is something like "Accepted", "rejected", Fail...???
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
}
使用继承。类似于:
public class StudentBase
{
public int StudentId { get; set; }
}
public class StudentInformation : StudentBase
{
public bool CanChangeBus { get; set; }
public List<int> AvailableBuses { get; set; }
}
public class BusChangeRequestModel
{
public StudentBase StudentInfo { get; set; }
...
...
}
public class BusChangeResponseModel
{
public StudentInformation StudentInfo { get; set; }
...
}