我有一个问题,我不知道该怎么做。其实我不确定标题是否正确。
我想封装一个具有通用参数的方法。我们的想法是在方法调用周围添加一些日志调用等。
因此这个功能
public void Load<T>(T spObject, params Expression<Func<T, object>>[] retrievals)
{
try
{
... .Load(spObject, retrievals);}...
}
}
应该封装一个看起来像这样的函数。
public void Load<T>(T spObject, params Expression<Func<T, object>>[] retrievals)
where T : ClientObject
必须删除Where T : ClientObject
,因为它需要在另一个项目中引用其他dll
。
当我尝试删除我收到错误的地方
类型'T'不能在泛型类型或方法'Microsoft.SharePoint.Client.ClientRuntimeContext.Load(T,params ...
)中用作类型参数'T'
希望有些人知道如何处理这个问题。
谢谢:-) 格尔茨
答案 0 :(得分:0)
这不是封装问题,而是间接引用问题。
如果您不想链接到此“其他”dll,但仍想使用load
方法,那么您需要直接引用Microsoft.SharePoint.Client.ClientObject
,因为那是{需要使用where
方法的{1}}子句。
这是您需要添加到源文件中的内容:
load
然后你需要添加
using Microsoft.SharePoint.Client;
到您的项目参考。 dll应位于Microsoft.SharePoint.Client.dll
Microsoft.SharePoint.Client.Runtime.dll
或C:\Program Files\Common Files\Microsoft Shared\SharePoint Client
中,具体取决于您的sharepoint版本。
这应该足以编译和链接您的程序。
答案 1 :(得分:-1)
您是否考虑过使用动态对象类?这允许在运行时定义对象。
public void Load(dynamic spObject, params Expression<Func<dynamic, object>>[] retrievals){
..
}