如何使用T参数来评估其类型c#

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将我的问题作为答案而不是评论来解决,那将是我接受的答案.

无论如何,多亏你们所有人.

ohi*_*oug 6

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)

希望这可以帮助!祝好运!