标签: managed

使用Exchange Web服务(EWS)托管API获取当前电子邮件的ItemId的下一封电子邮件的ItemId

我需要在C#中编写一个方法,使用Exchange Web服务(EWS)托管API从邮箱中读取电子邮件并给出当前电子邮件的ItemId/UniqueId,在收件箱中返回下一封电子邮件的ItemId/UniqueId.当前的电子邮件.

此外,由于各种原因,我要求该方法是一个静态无状态方法,也就是说,它不能依赖于在方法调用之间持续存在的任何成员/全局变量.因此,我不能简单地存储对FindItemsResults对象的实例的引用,并在每次调用该方法时移动到下一个Item.

我尝试使用以下代码实现该方法(仅简化示例,无错误检查):

using Microsoft.Exchange.WebServices;
using Microsoft.Exchange.WebServices.Data;
...
...
public string GetNextEmailId(string currentItemId)
{
    // set up Exchange Web Service connection
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
    service.AutodiscoverUrl("example.user@contoso.com");
    // create SearchFilter to find next email after current email
    ItemId itemId = new ItemId(currentItemId);
    SearchFilter sfNextEmail = new SearchFilter.IsGreaterThan(EmailMessageSchema.Id, itemId);
    // find next email in inbox
    ItemView itemView = new ItemView(1);
    itemView.OrderBy.Add(EmailMessageSchema.DateTimeReceived, SortDirection.Ascending);
    FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, sfNextEmail, itemView);
    // return unique ID of next email
    return findResults.Items[0].Id.UniqueId;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此方法时,它会从service.FindItems行抛出以下异常:

System.ArgumentException:"验证失败.参数名称:searchFilter" …

.net managed exchangewebservices ews-managed-api

0
推荐指数
1
解决办法
4062
查看次数

在C++托管类中通过引用传递变量!

我在c ++/cli托管类中传递引用变量时遇到问题!很明显如何在非托管类中进行,但我正在使用c ++/cli:/

这是我正在尝试做的一个例子:

pManager->checkBoundary( int^ mX, int^ mY -  1 );


void Manager::checkBoundary( int^ cX, int^ cY )
{
    if( cY >= 0 )
    {
        cY = this->mBoardHeight;
    }
    else if( cY < mBoardHeight )
    {
        cY = 0;
    }
    else if( cX >= 0 )
    {
        cX = this->mBoardWidth;
    }
    else if( cX < mBoardWidth )
    {
        cX = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道这是不正确的,但我如何传递参考var?

.net c++-cli managed pass-by-reference

0
推荐指数
1
解决办法
3211
查看次数

在C#,封送处理类型中传递IntPtr指针后,在非托管C ++代码中分配数组

我正在尝试实现一些涉及托管C#和非托管C ++代码之间的封送处理数组的项目。我遇到了一个问题,我在网上找到的所有解决方案似乎都无效。我对此表示感谢。

我没有提供完整的代码,而是显示了问题的非常简化的部分。尽管它看起来很大,但非常简单-只是概念上的。只是想提供尽可能多的全貌。

C ++部分:

对象

class cObject
{
public:
    //...constructor, destructor...
    int Method_Known_Size(double* array, int size);
    int Method_Unknown_Size(double* array);
    ...
    void FreeArray(double* p);
}
Run Code Online (Sandbox Code Playgroud)

对象.cpp

int Method_Known_Size(double* array, int size)
{
    //modify array somehow..
    for(int i=0; i<size; i++) array[i] = i;

}

int method_Unknown_Size(double* array)
{
    int size = 9;
    array = new double[size];
    for(int i=0; i<size; i++) array[i] = i;
}
Run Code Online (Sandbox Code Playgroud)

(跳过Caller.h) Caller.cpp

//...callers for constructor, destructor, for releasing unmanaged memory...
extern "C" int __stdcall Run_Known_Size(cObject* pObject, double* …
Run Code Online (Sandbox Code Playgroud)

c# c++ unmanaged managed marshalling

0
推荐指数
1
解决办法
5287
查看次数

调用我的 CLR 项目时 KernelBase.dll 中未处理的异常

我得到这个例外:

LogLoaderUnmanaged.exe 中 0x75374B32 (KernelBase.dll) 处的未处理异常:0xE0434352(参数:0x80070002、0x00000000、0x00000000、0x0000000004、0x000000004)。

当我使用此代码(Application .exe 类型项目的一部分)调用我的 CLR 项目时:

int _tmain(int argc, _TCHAR* argv[])
{
    _tprintf_s(_T("Press enter to start logging messages."));
    _getch();
    std::string app("Application");
    std::string domain("Domain");
    std::string message("Message");
    UnmanagedLoggerClient::LogError(Debug, app.c_str(), domain.c_str(), message.c_str());
    _tprintf_s(_T("Done."));
}
Run Code Online (Sandbox Code Playgroud)

错误发生在对 LogError 的调用上,它在我的 CLR DLL 的头文件中定义如下:

#ifdef UNMANAGEDLOGGERCLIENT_EXPORTS
#define WIN32PROJECT_API __declspec(dllexport)
#else
#define WIN32PROJECT_API __declspec(dllimport)
#endif

enum UnmanagedLogLevel
{
    Debug = 0,
    Error = 1
};

static class WIN32PROJECT_API UnmanagedLoggerClient
{
public:
    static void LogError (UnmanagedLogLevel level, const char* app, const char* domain, const …
Run Code Online (Sandbox Code Playgroud)

c++ clr unmanaged managed exception

0
推荐指数
1
解决办法
7857
查看次数

是否管理C#不安全代码?

如果您编写了C#程序,并且部分代码是使用unsafe关键字编写的,那么该代码是否仍被视为“托管”代码?

即。它会在CLR下运行吗?

c# clr managed

0
推荐指数
2
解决办法
769
查看次数

如何将通过 EWS 创建的所有电子邮件标记为收入邮件而不是草稿?

只是有一个关于这个问题的问题,我在使用 EWS 和创建邮件时遇到了这个问题。

\n\n

I\xc2\xb4m 创建电子邮件并将其保存到我的收件箱。

\n\n
            EmailMessage message = new EmailMessage(_exchangeService);\n            message.From = emailObject.SenderAddress;\n            message.Subject = emailObject.Subject;\n            message.Body = emailObject.Body\n            message.ToRecipients.Add(email);\n            message.CcRecipients.Add(emailObject.CC);\n            message.IsRead = false;\n            message.Save(WellKnownFolderName.Inbox);\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在的问题是,EWS 正在将电子邮件创建为草稿。

\n\n

是否可以将邮件标记为收入邮件?

\n\n

谢谢你!

\n

c# email managed exchangewebservices

0
推荐指数
1
解决办法
444
查看次数

C#无法反映到私人领域

我遇到了一个问题.

在Unity中,我想反思一个私人领域.但我总是为fieldinfo获取null.我究竟做错了什么?

public abstract class _SerializableType
{
    [SerializeField] private string name;
}

// because I am using a CustomPropertyDrawer for all inherited from _SerializeType
public class SerializableType<T> : _SerializableType { }
public class SerializableType : _SerializableType { }

[Serializable] public class CTech : SerializableType<_CouplingTechnology> { }
Run Code Online (Sandbox Code Playgroud)

所以使用这种方法实际上应该工作.

        // type is CTech
        // propertyPath in that case is "name"
        FieldInfo info = type.GetField(propertyPath, BindingFlags.Instance
                         | BindingFlags.Public | BindingFlags.NonPublic);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我在具有自己的CustomInspector的托管库中调用此方法.所以它反映到每个领域并计算如何显示它.AppDomain是完全信任的.我不知道还有什么可能是重要的......

c# reflection inheritance managed unity-game-engine

0
推荐指数
1
解决办法
314
查看次数