我有一个由多个应用程序使用的数据模型,我现在需要由团队之外的其他开发人员使用。该模型应仅供开发人员使用。
我想知道我最好如何做到这一点:我目前的方法是创建一个只复制原始模型的新项目,并且只包含所请求的属性。
例如
namespace Model
{
public class Car
{
private double m_speed;
private FuelType m_fuelType;
public double Speed
{
get { return m_speed; }
set { m_speed = value; }
}
public FuelType FuelType
{
get { return m_fuelType; }
set { m_fuelType = value; }
}
}
}
在我的Lite模型中,我只想暴露速度:
using Model;
namespace ModelLite
{
public class Car
{
private Model.Car car = new Model.Car();
public double Speed
{
get { return this.car.Speed; }
set { this.car.Speed = value; }
}
}
}
由于模型很大,这涉及很多重复。也许有更好的选择?
由于
答案 0 :(得分:2)
此问题无法解决。如果只允许不同的开发者部分访问字段,则需要为不同的开发人员创建不同的提要。
虽然您的模型对我来说似乎不对,但您可以通过以下方式实现此目的:
class FeedSecurityAttribute : Attribute
{
public FeedSecurityAttribute(params string[] rights) {}
}
[FeedSecurity("piet", "klaas")] string MyProperty { get;set; }
答案 1 :(得分:2)
看看Martin Fowler在Application Facades和Facade Pattern
上的工作答案 2 :(得分:0)
你可能会看到使用多个接口
public interface ICarBasic
{
double Speed { get; set; }
}
public interface ICar : ICarBasic
{
FuelType FuelType { get; set; }
}
或者将所有Basic对象编写为基类。继承它们以使用新程序集创建完整的类。将开发人员放在项目的一边,只有具有基类的程序集可以解决您的问题。
组装1(对于其他开发者)
using Model;
namespace ModelLite
{
public class Car
{
private Model.Car car = new Model.Car();
public double Speed
{
get { return this.car.Speed; }
set { this.car.Speed = value; }
}
}
}
大会2(全功能)
using ModelLite
namespace Model
{
public class Car : ModelLite.Car
{
private FuelType m_fuelType;
public FuelType FuelType
{
get { return m_fuelType; }
set { m_fuelType = value; }
}
}
}
只将程序集1提供给其他开发人员。