C# 定义接口
我有一个由多个应用程序使用的数据模型,我现在需要团队外的其他开发人员使用它。该模型只应部分提供给开发人员 我想知道如何才能最好地实现这一点:我目前的做法是创建一个新项目,只复制原始模型,只包含请求的属性 比如说C# 定义接口,c#,architecture,C#,Architecture,我有一个由多个应用程序使用的数据模型,我现在需要团队外的其他开发人员使用它。该模型只应部分提供给开发人员 我想知道如何才能最好地实现这一点:我目前的做法是创建一个新项目,只复制原始模型,只包含请求的属性 比如说 namespace Model { public class Car { private double m_speed; private FuelType m_fuelType; public double Speed
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; }
}
}
}
由于模型很大,因此需要大量重复。也许有更好的选择
谢谢,这个问题没有解决办法。如果不同的开发人员只允许部分访问字段,则需要为不同的开发人员创建不同的提要
虽然我觉得你的模型不对,但你可以通过以下方式实现:
- 创建一个具有主对象也具有的所有属性的提要对象
- 创建一些属性,如:
- 在提要的属性上添加注释,指定谁有权访问此属性,如
[FeedSecurity(“piet”,“klaas”)]string MyProperty{get;set;}
- 使用一些反射树和表达式树自动从业务对象填充提要对象,并检查用户是否有权访问该属性,否则忽略它
public interface ICarBasic
{
double Speed { get; set; }
}
public interface ICar : ICarBasic
{
FuelType FuelType { get; set; }
}
或者将所有基本对象作为基类编写。从它们继承以使用新程序集生成完整的类。只给项目外的开发人员提供带有基类的程序集可能会解决您的问题
组件1(用于其他开发人员)
组件2(全功能)
仅将assembly 1提供给其他开发人员。我认为应用程序Facades的链接应该是这基本上是Tarscher在他的第一篇文章中所说的。当你需要支持>X个不同的提要版本时,这是不可维护的。他两次执行速度。我的建议只有一次。从什么时候起继承就不可维护了?如果您有
类车{Model;Year;Fuel;}
并且想要公开模型,那么继承就不可维护了;年份代码>给一个人,燃料;模型代码>到另一个,以及年份;燃料代码>发送给其他人。
public interface ICarBasic
{
double Speed { get; set; }
}
public interface ICar : ICarBasic
{
FuelType FuelType { get; set; }
}
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; }
}
}
}
using ModelLite
namespace Model
{
public class Car : ModelLite.Car
{
private FuelType m_fuelType;
public FuelType FuelType
{
get { return m_fuelType; }
set { m_fuelType = value; }
}
}
}