Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据要求派生属性。。。?_C#_Design Patterns - Fatal编程技术网

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

因此,我有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
•   bool IsOverride
•   string Identifier
•   string userlogin
•   FolderName
以下模型类用于“Que Table”中的创建/更新/删除数据

•   CreateQue class
•   UpdateQue class 
•   DeleteQue class
CreateQue类只需要以下属性:IsQb、IsOverride、UserLogin、FolderName
UpdateQue类只需要以下属性: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。