我们都知道这件事
bool.Parse(Session["foo"].ToString())
如何为某些自定义类实现相同的PARSE方法?
所以如果我有
class MyClass
{
}
有可能这样做
MyClass.Parse(Session["foo"])
我们都知道这件事
bool.Parse(Session["foo"].ToString())
如何为某些自定义类实现相同的PARSE方法?
所以如果我有
class MyClass
{
}
有可能这样做
MyClass.Parse(Session["foo"])
您需要做的就是为您的类编写一个名为 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;
}
}
public Class MyCustomClass{
public static MyCustomClass Parse(string str){
if (str == "Whatever"){
return new MyCustomClass();
}
else if (/*other conditions*/) {
}
}
}
或者,还有什么你不明白的吗?
你可以试试这样的。
public static MyCustomClass Parse(object o)
{
if (o == null)
return null;
try
{
if (o is MyCustomClass)
return (MyCustomClass)o;
}
catch
{
return null;
}
return null;
}
绝对 - 您需要编写适量的代码来实现它,但如果必须,您当然可以手动完成:
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
“工厂方法样式”。
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);