我想评估 T 参数以执行常见行为。
我试图从不同的按钮调用这个方法
private void Execute<T>(string strValue)
{
//Do operations
this.SaveObject<T>();
}
按钮1
this.Execute<Employee>("somevalue1");
按钮2
this.Execute<Supplier>("somevalue2");
但随后的问题是,当我想在此时定义 SaveObject 方法时,我该如何评估 T。我试过了,但我告诉我 T 是一个参数,我将它用作变量。
private void SaveObject<T>()
{
//Here the problem
if(T is Employee)
{
//Do something
}
if(T is Supplier)
{
//Do something
}
}
我想知道是什么类型,然后做我的具体操作。所有对象继承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
}
}
希望对您有所帮助!祝你好运!
关于c# - 如何使用 T 参数评估其类型 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20228797/