2

私たちは皆このことを知っています

bool.Parse(Session["foo"].ToString())

一部のカスタムクラスに同じPARSEメソッドを実装するにはどうすればよいですか?

だから私が持っているなら

class MyClass
{

}

のようにすることは可能だろう

MyClass.Parse(Session["foo"])
4

5 に答える 5

6

あなたがする必要があるのは、文字列を受け取り、それを使ってMyClassのインスタンスを作成するクラスのParse()と呼ばれる静的メソッドを書くことです。

public class MyClass
{
    public static MyClass Parse(string input)
    {
        if(String.IsNullOrWhiteSpace(input)) throw new ArgumentException(input);

        var instance = new MyClass();

        // Parse the string and populate the MyClass instance

        return instance;
    }
}
于 2012-04-15T14:55:49.377 に答える
2
public Class MyCustomClass{
   public static MyCustomClass Parse(string str){
        if (str == "Whatever"){
             return new MyCustomClass();
        }
        else if (/*other conditions*/) {

        }
   }
}

それとも、他にわからないことがありましたか?

于 2012-04-15T14:56:59.107 に答える
2

このようなことを試すことができます。

       public static MyCustomClass Parse(object o)
    {

        if (o == null)
            return null;

        try
        {
            if (o is MyCustomClass)
                return (MyCustomClass)o;
        }
        catch
        {
            return null;
        }
        return null;

    }
于 2012-04-15T14:58:58.690 に答える
1
public class foo
{
 public static foo Parse(object obj)
 {
  return new foo(obj);
 }

 public foo(){}

 public foo(object obj)
 {
  //your code to parse from obj to foo..
 }
}

あなたの「フレーム/外側」コードで:

var t = foo.Parse(someInstance);
于 2012-04-15T15:04:49.900 に答える
1

もちろん - 実装するには適度な量のコードを書く必要がありますが、次のことが必要な場合は手動で行うことができます:

public class MyClass {
    public string First {get; private set;}
    public string Last {get; private set;}
    public MyClass(string first, string last) {
        First = first;
        Last = last;
    }
    public static bool Parse(string s, out MyClass res) {
        res = null;
        if (s == null) return false;
        var tokens = s.Split(new[] {';'});
        if (tokens.Length != 2) return false;
        res = new MyClass(tokens[0], tokens[1]);
        return true;
    }
}

このバージョンは出力引数を取り、 を返しますboolMyClass例外をスローして「ファクトリメソッドスタイル」を返すように簡単に変更できます。

于 2012-04-15T14:59:31.490 に答える