通用铸造问题C#

Joh*_*ohn 2 c# generics

我有一个通用的函数:

public static ShowTrackChangesViewModel CreateVM<T>(IList<TrackChanges> TrackChanges, T entity)
        {
            //How do i access T properties ?

        }
Run Code Online (Sandbox Code Playgroud)

这里是一个entityFramework对象.我如何将它转回真实的访问其财产?我需要写一个大的if代码吗?谢谢

Kie*_*one 8

你可以添加这个小宝石,说它T应该是一个类型的对象MyBaseType:

public static ShowTrackChangesViewModel CreateVM<T>(IList<TrackChanges> TrackChanges, T entity) where T : MyBaseType
Run Code Online (Sandbox Code Playgroud)

然后,您可以entity像使用MyBaseType一样使用它.如果您需要不在基类中的特定属性,那么您不需要通用方法(因为它不是通用的!).

希望有所帮助!