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

标签 c# generics parameters typeof

我想评估 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/

相关文章:

c# - 将数据表绑定(bind)到 gridview 的问题

c# - 使用具有不同名称的系统类?

c# - UITableView 标题和文本颜色

java - Java 中的通用 InternPool<T>?

c# - 使用 Structure Map 替换泛型类型参数中的抽象类型

java - 带有提供特定返回值的抽象方法的未经检查的强制转换警告

parameters - MEF+MVVM : How to instantiate a class with non-importing or mixed parameters

c# - .Net Core Logging 中的日志文件写入何处

function - 是否有可能找出一个函数需要多少个命名参数?

java - 将数组作为参数传递时出错 - Java