请教

Oct 9, 2009 at 7:07 AM

public void UpdateContent<T>(string content) where T : LinqObjectModel<T>
        {
            T t = default(T);

这句话是行不通的 因为T是个abstract

 

所以LinqObjectModel不知怎么初始化,这里T t = T.New;是不可以用的。

public void UpdateContent<T>(string content) where T : class,IDbObject
        {
            T t = default(T);这句话没问题因为T不是abstract的

Oct 9, 2009 at 7:10 AM
Edited Oct 9, 2009 at 7:15 AM

- -

T t= DynamicObject.NewObject<T>();

也不行

t = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(content);

的时候会出错

说是Abstract。。

Could not create an instance of type Sipo.Model.DbEntry.vt_CategoryType. Type is an interface or abstract class and cannot be instantated.

Oct 9, 2009 at 7:42 AM

 

Abstract不能用Newtonsoft.Json.JsonConvert.DeserializeObject反序列化

貌似要自己写。

我放弃了

Oct 9, 2009 at 7:48 AM

能否去掉Abstract呢。。。

Coordinator
Oct 9, 2009 at 8:14 AM
  1. 不能去掉 abstract
  2. T t = DynamicObject.NewObject<T>(); 是可以的。
  3. 我觉得你这个设计是错的,这个 UpdateContent 根本不应该是泛型的。

 

 

Coordinator
Oct 9, 2009 at 8:16 AM

如果你是要做 json 序列化和反序列化,可以参考 DbEntry.Net 中 XML 序列化支持的方式,虽然 XML 序列化并未完成,不过模式应该是相同的。

 

Oct 9, 2009 at 9:20 AM

我只是想用一种新的方法去反序列化,适用于所有的简单类(不含关系的简单类)。用IDbObject了....

Oct 9, 2009 at 9:27 AM

说白了,我在设计一种简单的用于CRUD的Scaffolding,就原来用一些PHP框架的时候用过,比如CakePHP,CodeIgniter。

所以我使用<T>

有好的建议没?

Scaffolding的中文意思我也不知叫啥,就有点像PhpMyAdmin

Coordinator
Oct 9, 2009 at 11:57 AM

关于 Scaffolding,在 DbEntry 的 Lephone.Web.Rails 中,我有实现,你可以看一下其中的代码。

 

Oct 9, 2009 at 2:33 PM

刚才看了你的代码,很启发。多谢。

DbEntry真是好深奥呀...