Max*_*mus 2 c# generics parameters typeof
我想评估一个T参数来执行一个常见的行为.
我试图从不同的按钮调用此方法
private void Execute<T>(string strValue)
{
//Do operations
this.SaveObject<T>();
}
Run Code Online (Sandbox Code Playgroud)
Button1的
this.Execute<Employee>("somevalue1");
Run Code Online (Sandbox Code Playgroud)
BUTTON2
this.Execute<Supplier>("somevalue2");
Run Code Online (Sandbox Code Playgroud)
但问题是当我想在那时定义SaveObject方法时如何评估T.我试过这个但是我告诉我T是一个参数而我用它作为变量.
private void SaveObject<T>()
{
//Here the problem
if(T is Employee)
{
//Do something
}
if(T is Supplier)
{
//Do something
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道什么类型,然后做我的具体操作.所有对象都继承EntityObject
- - - 编辑 - - -
在问题的那一刻,我唯一需要解决我的问题的是Silvermind的"回答评论".(typeof(T))然后我采取了许多人的方法来改进架构.
如果Silvermind将我的问题作为答案而不是评论来解决,那将是我接受的答案.
无论如何,多亏你们所有人.
HighCore是正确的,如果要实现此功能,最好的选择是使用受支持的虚方法创建抽象基类,然后在继承自抽象基类的特定于类的类中覆盖它们.类似的东西:
public abstract class BaseManager<T> where T : class {
public virtual void SaveObject() {
// Some common save logic if it can be done
}
}
public class EmployeeManager : BaseManager<Employee> {
public override void SaveObject()
{
// Your save logic
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!祝好运!
| 归档时间: |
|
| 查看次数: |
4518 次 |
| 最近记录: |