小编Fir*_*oso的帖子

为什么List <T>在协变接口MyInterface <out T>上无效

跟进前一个问题的问题,这被认为是一个共同变异问题.更进一步,如果我修改IFactory如下:

class Program
{
    static void Main(string[] args)
    {
        IFactory<IProduct> factory = new Factory();
    }
}

class Factory : IFactory<Product>
{
}

class Product : IProduct
{
}

interface IFactory<out T> where T : IProduct
{
    List<T> MakeStuff();
}

interface IProduct
{
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

方差无效:类型参数T必须在Sandbox.IFactory.MakeStuff()上无效.T是协变的.

为什么这不是无效的?如何/应该如何解决?

c# generics inheritance type-inference covariance

9
推荐指数
3
解决办法
1248
查看次数

"开发人员"应该如何了解架构和规划

我已经使用C和C#多年了,我认为自己是一个"相当不错"的程序员,但正如多次指出的那样,编程只是软件工程和开发的一小部分.我是我部门的唯一编码器,但看起来它将开始改变,我想从Stackoverflow社区了解以下内容.

  • 从编码器转向开发人员需要什么 - 我已经阅读了Code Complete,所以我认为我已经准备好接受这一切.在某种程度上我已经是.
  • 在做我的软件模型时我应该使用什么工具 - 假设C#
  • 在设置硬编码和快速代码之前,我应该对我的架构建模有多深? - 我意识到这个问题是多么主观,而且我更喜欢经验法则,而不是"它取决于它".假设我正在编写旨在"持续5 - 10年"的内部工具
  • 您愿意给从编码到工程的人提出什么建议?

谢谢大家!祝伟大的阵亡将士纪念日!

architecture

8
推荐指数
2
解决办法
1476
查看次数

确保lisp中的2个列表长度相同的简单方法是什么?

鉴于2个列表,我想确保它们的大小相同,我在使用此代码时遇到了困难.我应该使用变量来做到这一点吗?

(defun samesize (list1 list2)
  (cond (;logic here) T))
Run Code Online (Sandbox Code Playgroud)

lisp

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

DataContract"Type"属性的序列化

如何在DataContract属性类中有效地序列化"Type"类型的属性?我假设Type是一个不可序列化的类型(哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇.基本上我需要为工厂方法序列化类型的名称以便有效地构造,但我不想将它作为字符串公开,我想要一个Type.

我知道有很多方法可以做到这一点,我很好奇目前还知道其他什么方法.

编辑:我刚刚意识到它可能是导致它的其他东西,但这里是错误,下面我有类定义.

键入'System.RuntimeType',数据协定名称为'RuntimeType:http://schemas.datacontract.org/2004/07/System',不是预期的.考虑使用DataContractResolver或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中.

[DataContract]
public class PlottingDeviceInfo : ObservableObject
{
    private string _deviceName;
    [DataMember]
    public string DeviceName
    {
        get
        {
            return _deviceName;
        }
        set
        {
            Set(() => DeviceName, ref _deviceName, value);
        }
    }

    private Type _deviceType;
    [DataMember]
    public Type DeviceType
    {
        get
        {
            return _deviceType;
        }
        set
        {
            Set(() => DeviceType, ref _deviceType, value);
        }
    }

    private DeviceSettingsInfo _settings;
    [DataMember]
    public DeviceSettingsInfo Settings
    {
        get
        {
            return _settings;
        }
        set
        {
            Set(() => Settings, ref _settings, value); …
Run Code Online (Sandbox Code Playgroud)

.net c# serialization datacontract

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

在ASP.NET中如何设置会话的当前用户标识?

我有一个简单的页面,我有一个登录按钮.我只是想以编程方式设置用户身份,以便当我重新导航到此页面或任何其他我可以获得当前用户身份.对此有特殊考虑吗?

asp.net asp.net-mvc asp.net-mvc-4

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

在WPF MVVM中正确启动线程查找任务的方法

所以我有一个可以由我的GUI执行的任务,该任务将提取信息以使用SQL数据库查询响应填充ViewModel. 假设我想开始这个任务并让我的gui自由地继续其他事情,同时播放"搜索"动画,在WPF/MVVM中执行此操作的正确方法是什么? 我假设你需要启动一个异步进程并设置一个绑定到启动动画故事板的数据触发器的bool.但是我用什么来启动这个过程呢?线?我还是WPF的新手,只是想确保我正在使用适合我的课程.

.net wpf multithreading mvvm

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

Enum的DataStateBehavior而不是bool?串?

在WPF中有一种简单的方法将VisualStates绑定到枚举值吗?有点像DataStateBehavior,但对于Enum?

data-binding wpf behavior

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

在C中分配内存的所有方法是什么?它们有何不同?

我知道以下内容:

  • 的malloc
  • 释放calloc
  • 的realloc

这些有什么区别?为什么malloc似乎几乎完全被使用?编译器之间是否存在行为差异?

c dynamic-memory-allocation

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

如何让ItemsCollection中的元素在拖放操作期间播放布局动画,以便为插入元素腾出空间

这是我的情景.我希望能够在项集合中拖放元素,并在项目移动到位时让其他元素成为...我也希望这是MVVM友好的.

从高级别的角度来看,在我看来,您应该能够将某种Interactivity行为附加到items集合中,该集合只是获取拖动项目的布局大小,并根据新的布局数据重新排列元素,但我是完全失去了如何实现这样的事情.

其他要考虑的功能是

  • 在拖动操作期间在滚动查看器边缘上自动滚动
  • 插入的对象可以是可变大小的

在我看来,我需要使用FluidMoveBehavior

wpf drag-and-drop mvvm

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

app.xaml中的StaticResource在app.xaml引用的资源字典中找不到

我有一种情况,我试图解析资源字典中引用的数据模板中的可视化组件,引用app.xaml标记的静态资源,请参阅下面的示例.

/App.xaml

<Application 
    x:Class="App" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"      
    xmlns:composition="clr-namespace:Composition"
    ShutdownMode="OnMainWindowClose">
    <Application.Resources>
        <ResourceDictionary>
            <composition:ApplicationContainer x:Key="ApplicationContainer"/>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MyApp;component/Composition/DataTemplates.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

/Composition/DataTemplates.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:projectvm="clr-namespace:ViewModels.ProjectManagement"
                    xmlns:unity="clr-namespace:Extensions">
    <DataTemplate DataType="{x:Type projectvm:ProjectDocument}">
        <ContentControl>
            <!-- Custom Extension that resolves a component from the composition container -->
            <unity:Resolve Container="{StaticResource ApplicationContainer}" TargetType="{x:Type projectvm:ProjectDocument}" ContractName="ProjectDocument"/>
        </ContentControl>
    </DataTemplate>
</ResourceDictionary> 
Run Code Online (Sandbox Code Playgroud)

ERROR就在上面,统一:Resolve行找不到ApplicationContainer静态资源,我不明白为什么.

.net wpf staticresource

5
推荐指数
0
解决办法
961
查看次数