小编ash*_*rya的帖子

C#中的递归泛型类型参数

我需要一些帮助来理解C#中的递归泛型。

我碰到了这段代码:

public abstract class Value<T> where T : Value<T>
{
    ....
}

public class UserId: Value<UserId>
{
}
Run Code Online (Sandbox Code Playgroud)

Value<T>对where子句两边使用where的部分感到困惑。有人可以解释一下代码的作用吗?

.net c# generics types type-parameter

2
推荐指数
1
解决办法
77
查看次数

以编程方式通过电子邮件发送网页.图片网址未解析

我正在编写一个SharePoint计时器作业,它需要提取网页的内容,并将该HTML作为电子邮件发送.

我正在使用HttpWebRequest和HttpWebResponse对象来提取内容.

除一个问题外,电子邮件功能正常.

提供我的电子邮件内容的网页包含图像.

当页面的html作为电子邮件发送时,HTML代码中的图像URL都是相对URL,它们不会被解析为绝对URL.

如何将图像URL解析为网页内容中的绝对路径?

有没有直接的方法来做到这一点?我不想在html代码上运行正则表达式来替换所有具有绝对URLS的相对URL.

c# asp.net email

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

以编程方式从基于声明身份验证的SharePoint 2010网站下载文件

我有一个控制台应用程序从SharePoint站点下载文件.sharepoint站点使用基于声明的身份验证.

此代码抛出403 Forbidden异常.指定的网络凭据具有对站点的完全访问权限,并且能够从浏览器下载相同的文件.

WebClient webClient = new WebClient();
webClient.Credentials = new NetworkCredential(username,Password,domain);
byte[] fileData = webClient.DownloadData(urlOfAFile); 
FileStream file = File.Create(localPath);
file.Write(fileData, 0, fileData.Length);
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

c# asp.net adfs claims-based-identity wif

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

在ASP.NET中正确使用Response.Write()

我试图在用户访问页面时强制下载XML文件.

这是我正在使用的代码

public partial class GenerateTemplate : LayoutsPageBase
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //.............
        //Going about generating my XML
        //.............
        Response.ClearContent();
        Response.AddHeader("content-disposition", "attachment; filename=template.xml");
        Response.Write(xmlDoc.InnerXml);
        Response.Flush();
        Response.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到一个问题,我的下载窗口无限期挂起,没有完成下载/打开文件.

我究竟做错了什么?我不会在这里处理任何物品或关闭任何连接吗?

.net c# asp.net

1
推荐指数
1
解决办法
2万
查看次数

在 lambda 表达式中使用相等比较器

我有一个场地类和一个坐标类,如下所示:

class Venue
{
    string Name;
    Coordinate coordinate;
}

class Coordinate
{
    double latitute;
    double longitude;
}
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够根据坐标选择场地,如下所示:

List<Venue> venues = GetAllVenues();

var myVenue = venues.FirstOrDefault(venue=>venue.coordinate == myCoordinate);
Run Code Online (Sandbox Code Playgroud)

我有一个 IEqualityComparer 实现,但 lambda 表达式没有将 IEqualityComparer 作为参数的重载。

如何在 lambda 表达式中使用相等比较器?

编辑:

我的相等比较器如下所示:

class CoordinatesEqualityComparer:IEqualityComparer<Coordinate>
    {
        public bool Equals(Coordinate x, Coordinate y)
        {
            return x.RowIndex == y.RowIndex && x.ColumnIndex == y.ColumnIndex;
        }

        public int GetHashCode(Coordinate obj)
        {
            return obj.GetHashCode();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我执行 Union() 操作时,像这样,即使两个列表中的坐标相同,它也无法正常工作。

List<Coordinates> coordinates; 
CoordinatesEqualityComparer comparer; 
coordinates.Union(someOtherListOfCoordinates, comparer); 
Run Code Online (Sandbox Code Playgroud)

但是,当我与自身进行联合时,它就起作用了。我究竟做错了什么?它与 GetHashCode() 实现有关吗? …

.net c#

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