相关疑难解决方法(0)

一种将基类型转换为派生类型的方法

我不确定这是否是一件奇怪的事情,或者是否有一些代码闻起来...但我想知道是否有某种方式(某种oop模式会很好)来"施放"基类型到其派生类型的形式.我知道这没有多大意义,因为派生类型将具有父级不提供的附加功能,这在其本身并非基本健全.但有没有办法做到这一点?这是一个代码示例,以便我可以更好地解释我在问什么.

public class SomeBaseClass {
    public string GetBaseClassName {get;set;}
    public bool BooleanEvaluator {get;set;}
}

public class SomeDerivedClass : SomeBaseClass {
    public void Insert(SqlConnection connection) {
          //...random connection stuff
          cmd.Parameters["IsItTrue"].Value = this.BooleanEvalutar;
          //...
    }
}

public static void Main(object[] args) {
    SomeBaseClass baseClass = new SomeBaseClass();
    SomeDerivedClass derClass = (SomeDerivedClass)baseClass; 
    derClass.Insert(new sqlConnection());
}
Run Code Online (Sandbox Code Playgroud)

我知道这似乎很傻,但有没有办法完成这种事情?

c# oop inheritance design-patterns

45
推荐指数
7
解决办法
7万
查看次数

如何在数据绑定控件中使用Eval调用扩展方法

我在int类型上有一个简单的扩展方法,所以我可以执行以下操作:

string timeLength = 61.ToTime() // timeLength will be "1:01"
Run Code Online (Sandbox Code Playgroud)

这在代码中很有用,但我想在Repeater模板中使用这种扩展方法.数据绑定时,我想执行以下操作:

<%# Eval("LengthInSeconds").ToTime() %>
Run Code Online (Sandbox Code Playgroud)

这没用,所以我试过:

<%# ((int) Eval("LengthInSeconds")).ToTime() %>
Run Code Online (Sandbox Code Playgroud)

它仍然无法正常工作.JIT编译器没有看到我的扩展方法,我在页面中有正确的import语句.

我解决这个问题的唯一想法是用Literal控件替换Eval并在代码隐藏中调用扩展方法,但不管怎样,我仍然想知道为什么这不起作用.

谢谢

asp.net data-binding extension-methods late-bound-evaluation

12
推荐指数
3
解决办法
5388
查看次数