2

私は2つのクラスがあると言います:

 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 のインスタンスがある場合、newClassB が newClassA のメソッドを呼び出すことができるように指定できるように、デザイン インターフェイス (GUI) を作成する方法はありますか?

ClassA newClassA...
ClassB newClassB...

newClassB.HelloWorld(newClassA.getSomething(newClassA.AGE));

基本的に必要なのは、ユーザーが自分のクラスを「視覚的にデザイン」し、メソッドの関係/入力/出力を指定できるように、デザイン インターフェイス (GUI) を用意することです。フィルターグラフみたいな感じです。

誰かが解決策/フレームワーク/設計パターン/キーワードを見つけ出すことができれば、それは大歓迎です。

(デザインインターフェイスはユーザーにとってGUIを意味することを強調する必要があります。申し訳ありません。)

4

1 に答える 1

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);
    }
}

例を更新して、Personinternalのコンストラクターを作成しました。これは必須ではありませんが、そうすると、コードのすべてのユーザーが流暢なインターフェイスを使用してのインスタンスを作成するように強制されますPerson

于 2012-09-07T02:09:52.600 に答える