说我有两节课:
ClassA{
//properties
public string NAME{set;get;}
public string ID{set;get;}
public int AGE{set;get;}
//Methods
public void DoSomething();
public void MethodA();
private void MethodB(string name);
private void MethodC(string name);
public void MethodD(string name,string id);
public string getSomething(int age);
}
ClassB{
public void Hello(int input);
public void HelloWorld(string input);
}
1)对于ClassA(可能有很多派生类),创建设计界面(GUI)的最佳方法是什么,以便我可以指定其属性值
2)对于ClassA,有没有办法创建一个设计接口(GUI),以便我可以指定调用哪个方法并指定所调用方法的序列/输入/输出?
public void DoSomethingWithClassA(ClassA ca ){
ca.MethodA();
// ca.MethodB(ca.NAME);
// ca.MethodB(ca.ID);
ca.MethodD(ca.NAME,getSomthing(ca.AGE));
}
3)如果我有一个名为newClassA的ClassA实例,那么名为newClassB的ClassB实例有一种创建设计接口(GUI)的方法,这样我就可以指定newClassB可以调用newClassA的方法:
ClassA newClassA...
ClassB newClassB...
newClassB.HelloWorld(newClassA.getSomething(newClassA.AGE));
基本上我需要的是拥有一个设计界面(GUI),以便用户可以“直观地设计”他的类,并可以指定方法的关系/输入/输出。我觉得它就像滤镜图。
如果有人能够找到解决方案/框架/设计模式/关键字,那将非常感激。
(我应该强调,设计界面对用户来说意味着GUI,对不起。)
答案 0 :(得分:4)
我认为你正在寻找像流畅的界面。
看看这篇文章,它应该可以帮助您实现这个目标:http://blog.raffaeu.com/archive/2010/06/26/how-to-write-fluent-interface-with-c-and-lambda.aspx
以下是一个关于如何使用它的简单示例:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
internal Person { }
}
public class PersonFactory
{
public NameSetter CreatePerson()
{
return new NameSetter(new Person());
}
}
public class NameSetter
{
private Person person;
internal NameSetter(Person person)
{
this.person = person;
}
public AgeSetter SetName(string name)
{
this.person.Name = name;
return new AgeSetter(this.person);
}
}
public class AgeSetter
{
private Person person;
internal AgeSetter(Person person)
{
this.person = person;
}
public Person SetAge(int age)
{
this.person.Age = age;
return this.person;
}
}
public class Program
{
public void Main()
{
Person p = new PersonFactory()
.CreatePerson()
.SetName("Bob")
.SetAge(30);
}
}
我更新了示例,使Person
内部的构造函数成为可能。这不是强制性的,但如果您这样做,它将强制您的代码的任何用户使用流畅的界面来创建Person
的实例。