我们都知道这件事
bool.Parse(Session["foo"].ToString())
如何为某些自定义类实现相同的 PARSE 方法?
所以,如果我有
class MyClass
{
}
可以这样做
MyClass.Parse(Session["foo"])
答案 0 :(得分:6)
您需要做的就是为您的类编写一个名为Parse()的静态方法,该方法接受String并使用它创建一个MyClass实例。
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;
}
}
答案 1 :(得分:2)
public Class MyCustomClass{
public static MyCustomClass Parse(string str){
if (str == "Whatever"){
return new MyCustomClass();
}
else if (/*other conditions*/) {
}
}
}
或者,还有其他你不理解的东西吗?
答案 2 :(得分: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;
}
答案 3 :(得分: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;
}
}
此版本接受输出参数并返回bool
;您可以轻松修改它以抛出异常并返回MyClass
“工厂方法样式”。
答案 4 :(得分: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);