我经常最终为System.Uri推出自己的包装器/扩展方法,并且想知道是否有人知道一个好的开源实现.我最喜欢做的是解析查询字符串参数,构建一个新的查询字符串(这是键),并替换页面名称.有什么好的,或者System.Uri对你来说足够好吗?
这是我的目标
[Serializable()]
public class PersistentObject
{
public virtual int ID {
get { return id; }
protected set { id = value;}
}
...
}
Run Code Online (Sandbox Code Playgroud)
当我尝试将其序列化为xml时,我收到错误"无法在此上下文中使用属性或索引器PersistentObject.ID,因为set访问器不可访问".如果setter不存在,它可以正常工作.我希望将此ID保持为序列化,而不需要涉及ID上的[XmlIgnore()]的hacktastic解决方案.我更喜欢如果我只能在setter上添加[XmlIgnore()],但编译器会抱怨.有人有一个很好的解决方案吗?
我目前正在研究python,因为我非常喜欢文本解析功能和nltk库,但传统上我是.Net/C#程序员.我不认为IronPython对我来说是一个集成点,因为我正在使用NLTK,并且可能需要将该库的端口连接到CLR.我看了一下Python for .NET,并想知道这是否是一个好的起点.有没有办法将python类编组成C#?此外,这个解决方案仍在使用吗?更好的是,有没有人这样做过?我正在考虑的一件事就是使用持久性介质作为中间人(在Python中解析,在MongoDB中存储,在.NET中运行站点).
我经常会有具有使用以下模式的属性的对象:
private decimal? _blah;
private decimal Blah
{
get
{
if (_blah == null)
_blah = InitBlah();
return _blah.Value;
}
}
Run Code Online (Sandbox Code Playgroud)
这个方法有名字吗?
随着鸭子打字之类的介绍,如果我动态编写对象方法,除了扩展方法之外我会喜欢它.有谁知道这是否可能?我知道MS担心在飞行中组成框架,但他们似乎在水中浸泡他们的脚趾.
更新:感谢Pavel的澄清.例如,假设我从LINQ返回一个新的动态对象,并希望动态添加一些方法.
我想知道是否有办法在运行时使实体的实例不可变.我知道我可以有readonly类型,但我想在运行时只读类型的实例.原因是,我想通过修改属性来使用NH域对象(如轻量级实体),但是在执行Session.Flush()或类似操作时不希望这些更改持久存在.始终存在Session.Evict(),但这不会阻止未知的开发人员在"只读"实体上的Session.Save().
不确定我是否可以这样做,但我正在尝试查看类型是否继承了具有通用约束的其他类型.
这是我想要找到的课程:
public class WorkoutCommentStreamMap : ClassMapping<WorkoutCommentStream>...
Run Code Online (Sandbox Code Playgroud)
这是测试
var inheritableType = typeof(NHibernate.Mapping.ByCode.Conformist.ClassMapping<>);
var isMappedObject = inheritableType.IsAssignableFrom(typeof(WorkoutCommentStreamMap));
Run Code Online (Sandbox Code Playgroud)
如果我将第一行更改为下面,它可以工作.但这违背了我的例子的目的.我的后备工作是在我想要查找的所有对象上放置一个自定义的非泛型接口并使用相同的调用.
var inheritableType = typeof(NHibernate.Mapping.ByCode.Conformist.ClassMapping<WorkoutCommentStream>);
Run Code Online (Sandbox Code Playgroud) 有人知道为什么ASP.NET可能不会使用Response.End()中止当前线程吗?
更新:原因是有一些代码,尽管编写得不好,但是在Response.End()之后执行.我从未见过Response.End()没有阻止当前线程执行的情况.
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.Redirect("somewhere", true);
Response.End();
//Some other code get's executed here
}
Run Code Online (Sandbox Code Playgroud) 最近发现ToGadget中的变量,也可能是委托,也没有收集垃圾.任何人都可以看到为什么.NET持有这个参考?似乎Foo结束后代表和所有代码都会被标记为垃圾收集.在倾倒堆之后,直接在内存中看到了B illions.
注意:'result.Things'是List <Gadget>(),Converter是系统委托.
public Blah Foo()
{
var result = new Blah();
result.Things = this.Things.ConvertAll((new Converter(ToGadget)));
return result;
}
.................
public static Gadget ToGadget(Widget w)
{
return new Gadget(w);
}
Run Code Online (Sandbox Code Playgroud)
更新:将"ConvertAll"更改为此可清除代理和相应的对象引用.这告诉我,List <> ConvertAll以某种方式持有代表,或者我不明白这些东西是如何被垃圾收集的.
foreach (var t in this.Things)
{
result.Things.Add(ToGadget(t));
}
Run Code Online (Sandbox Code Playgroud) c# ×6
.net ×2
asp.net ×2
c#-4.0 ×1
delegates ×1
nhibernate ×1
nlp ×1
nltk ×1
python ×1
python.net ×1
reflection ×1