C# 根据要求派生属性。。。?
因此,我有3个字段/属性。说,他们是,帕拉玛,帕拉玛,帕拉玛。我有三个班,A班,B班,C班。C# 根据要求派生属性。。。?,c#,design-patterns,C#,Design Patterns,因此,我有3个字段/属性。说,他们是,帕拉玛,帕拉玛,帕拉玛。我有三个班,A班,B班,C班。 要求使用: • paramA, paramB in Class A • paramA, paramC in Class B • paramB, paramC in Class D 有没有办法在一个公共位置声明所有这3个属性,并根据要求在a、B、C类中派生 更新 请查看该要求的更多详细信息: 真正的要求是: 数据库中有一个表'Que table',该表具有以下字段 • bool IsQb
要求使用:
• paramA, paramB in Class A
• paramA, paramC in Class B
• paramB, paramC in Class D
有没有办法在一个公共位置声明所有这3个属性,并根据要求在a、B、C类中派生
更新请查看该要求的更多详细信息:
真正的要求是: 数据库中有一个表'Que table',该表具有以下字段
• bool IsQb
• bool IsOverride
• string Identifier
• string userlogin
• FolderName
以下模型类用于“Que Table”中的创建/更新/删除数据• CreateQue class
• UpdateQue class
• DeleteQue class
CreateQue类只需要以下属性:IsQb、IsOverride、UserLogin、FolderNameUpdateQue类只需要以下属性:IsQb、IsOverride、Identifier、UserLogin、FolderName
并且DeleteQue类只需要:Identifier属性
模型类的代码为:
public class CreateQue
{
public bool IsQb { get; set; }
public bool IsOverride { get; set; }
public string userlogin { get; set; }
public string FolderName { get; set; }
}
public class UpdateQue
{
public bool IsQb { get; set; }
public bool IsOverride { get; set; }
public string Identifier { get; set; }
public string userlogin { get; set; }
public string FolderName { get; set; }
}
public class DeleteQue
{
public string userlogin { get; set; }
public string Identifier { get; set; }
}
那么,是否有任何模式/架构可以在单个位置声明所有这些属性,并根据这些模型类中的需求进行派生
提前感谢由于我们看不到您的要求,您需要做什么还不清楚。您可以使用以下接口:
public interface IHasPropertyA
{
string PropertyA { get; set; }
}
public interface IHasPropertyB
{
string PropertyB { get; set; }
}
public class ClassA : IHasPropertyA, IHasPropertyB
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
我们不清楚您需要做什么,因为我们看不到您的要求。您可以使用以下接口:
public interface IHasPropertyA
{
string PropertyA { get; set; }
}
public interface IHasPropertyB
{
string PropertyB { get; set; }
}
public class ClassA : IHasPropertyA, IHasPropertyB
{
public string PropertyA { get; set; }
public string PropertyB { get; set; }
}
你说的“需求就是使用”是什么意思真的不清楚。。。如果您能提供有关您试图实现的目标的更多详细信息,这会有所帮助。创建一个公开3个属性的静态类,然后在您的项目中使用这些属性?乍一看,这倾向于将参数声明为
virtual
,但您应该在此处提供更多信息。您的设计可能也有缺陷。创建单个Que
类和关联的Create
、Update
和Delete
函数如何?为什么需要使用单独的类来实现这一点?@Pieter Witvoet;谢谢,但是这些模型类用于web api接口。3个接口(创建/更新/删除)将作为服务合同提供给外部世界。模型类在这些API中被用作输入参数。你所说的“需求就是使用”是什么意思真的不清楚。。。如果您能提供有关您试图实现的目标的更多详细信息,这会有所帮助。创建一个公开3个属性的静态类,然后在您的项目中使用这些属性?乍一看,这倾向于将参数声明为virtual
,但您应该在此处提供更多信息。您的设计可能也有缺陷。创建单个Que
类和关联的Create
、Update
和Delete
函数如何?为什么需要使用单独的类来实现这一点?@Pieter Witvoet;谢谢,但是这些模型类用于web api接口。3个接口(创建/更新/删除)将作为服务合同提供给外部世界。模型类在这些API中用作输入参数。如果不使用接口,就不能组合A+B、A+C和B+C。这将由于.NET中的多重继承限制而起作用。如果不使用接口,就不能组合A+B、A+C和B+C。